教えて下さい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
do

教えて下さい

#1

投稿記事 by do » 5年前

コード:

#define _CRT_SECURE_NO_DEPRECATE 
#include <stdio.h>
#include <string.h> 

#define PLAYER_MAX (2)

typedef struct
{
	char name[21];
	int  hp;
	int  attack;
}PLAYER;

void input_player(PLAYER *);
void output_player(PLAYER *);
bool battle(PLAYER*, PLAYER*);

int main(void)
{

	PLAYER player_data[PLAYER_MAX];
	PLAYER *pt_player_data;
	int i;
	int b_end;
	int turn;

	pt_player_data = &player_data[0];
	for (i = 0; i < PLAYER_MAX; i++)
	{

		printf("%d人目\n", (i + 1));

		input_player(pt_player_data);
		pt_player_data++;
	}

	pt_player_data = &player_data[0];
	for (i = 0; i < PLAYER_MAX; i++)
	{
		printf("%d人目\n", (i + 1));
		output_player(pt_player_data);
		pt_player_data++;
	}

	printf("バトルスタート\n");

	turn = 0;
	do{
		b_end = battle(&player_data[turn], &player_data[(turn ^ 1)]);
		turn = (turn ^ 1);
	} while (!b_end);


	getchar();
	return 0;


}


void input_player(PLAYER*pt_data)
{
	printf("名前を入力してください==>\n");
	scanf("%s", pt_data->name);
	rewind(stdin);

	printf("体力を入力してください==>\n");
	scanf("%d", &pt_data->hp);
	rewind(stdin);

	printf("攻撃力を入力してください==>\n");
	scanf("%d", &pt_data->attack);
	rewind(stdin);

}

void output_player(PLAYER *pt_data)
{
	printf("名前:%s\n", pt_data->name);
	printf("体力:%d\n", pt_data->hp);
	printf("攻撃力:%d\n", pt_data->attack);

}


bool battle(PLAYER *pt_atc, PLAYER *pt_def)
{
	pt_def->hp -= pt_atc->attack;


	if (pt_def->hp < 0)
		pt_def = 0;


	printf("%sは%dの攻撃を受けた\n", pt_def->name, pt_atc->attack);

	if (pt_def <= 0){


		printf("プレイヤー%s勝ち\n", pt_atc->name);


		return true;


	}

	return false;


}
2人の名前を入力して自動(乱数)でステータスを決定して
バトルさせるようにしたいのですがわからないので教えてください

“C言語何でも質問掲示板” へ戻る