パーティ編成
Posted: 2014年11月19日(水) 20:07
C言語で構造体ポインタ、ポインタ関数、ポインタ配列を用いて5人の中から4人のキャラクターを選びそして何度でも隊列変更ができるプログラムを作っているのですがなかなか上手くできません誰か教えてもらえないでしょうか。一応自分で作ったソースも載せておきます。間違っているところを指摘して頂くと幸いです。
#include<stdio.h>
#include<string.h>
#define MAX 4
typedef struct characterparameter
//////////////構造体の定義////////////////
{
char job[13]; //職業
short hp; //体力
unsigned char mp; //魔力
unsigned char atk; //攻撃力
unsigned char def; //防御力
}Character;
///////プロトタイプ宣言///////
void Inpot(Character*,Character*);
void Status(Character*);
void Init(Character*);
void koukan(Character*);
//////////////////////////////
Character character[5];
int main(void)
{
printf("よく来たね\n");
Init(character);
Character character_select[4];
Character *party;
Character *select;
party=character;
select=character_select;
Inpot(party,select);
Status(select);
printf("また来てね");
rewind(stdin);
getchar();
return 0;
}
void Inpot(Character* party,Character* select)
{
int job,wk,i;
int restat=1;
while(restat==0)
{
for(int i=0;i<MAX;i++)
{
printf("では仲間を4人選んでね\n");
printf("1:騎士 2:剣士 3:武士 4:戦士 5:ドラゴン(半角数字で入力して下さい) \n>");
rewind(stdin);
scanf("%d",&job);
select[i]=party[job-1];
}
printf("これでいいの?\n 0:構わない 1:もう一度やり直す\n>");
scanf("%d",&restat);
}
}
void Status(Character* select)
{
for(int j=0;j<MAX;j++)
{
//ステータスの出力処理
printf("職業:%s\n",select->job); //職業の出力
printf("HP:%d\n",select->hp); //体力の出力
printf("MP:%d\n",select->mp); //魔力の出力
printf("ATK:%d\n",select->atk); //攻撃力の出力
printf("DEF:%d\n",select->def); //防御力の出力
select++;
}
}
void Init(Character* character)
{
for(int i=0;i<5;i++)
{
Character character[5]=
{{"騎士",80,60,50,40},
{"剣士",30,10,50,30},
{"武士",100,10,100,30},
{"戦士",50,50,50,50},
{"ドラゴン",500,0,255,255}};
}
}
void Koukan(Character* select)
{
int restat=1;
while(restat==0)
{
int a,b,wk,i;
printf("何番と何番を入れ替えますか\n>");
scanf("%d",&a);
scanf("%d",&b);
while(1)
{
wk=select[a];
select[a]=select[b];
select[b]=wk;
}
printf("これでよろしいですか\n 0:構わない 1:もう一度やり直す\n>");
scanf("%d",&restat);
if(restat==0)
{
i=1;
}else if(restat==1)
{
i=0;
}
}