#include<stdio.h>
#include<time.h>
#include<stdlib.h>
int main()
{
FILE *fp;
int i;
int p_LOOSE,p_EVEN,p_WIN;
typedef enum { GU,CHOKI,PA,END }TE;
TE pc,player;/* PCとあなたの手*/
const char *te[] = {"グー", "チョキ", "パー", "終了"};
typedef enum { LOOSE, EVEN, WIN } JUDGE;
p_LOOSE=0;
p_EVEN=0;
p_WIN=0;
const JUDGE result[3][3] = {
{EVEN, WIN, LOOSE},
{LOOSE, EVEN, WIN},
{WIN, LOOSE, EVEN}
}; /* プレイヤーの勝ち負けはresult[player][pc]で得られる */
const char *message[] = { "あなたの負けです", "あいこです", "あなたの勝ちです" };
srand((unsigned)time(NULL));
puts("じゃんけんをします");
for (i = 0; i < sizeof(te) / sizeof(te[0]); i++) {
printf("%dが%sで", i, te[i]);
}
puts("す");
do {
puts("じゃんけん");
scanf("%d",&player);
puts("ぽん!");
if (player < 0 || player > END) {
puts("やり直してください");
continue;
} else if (player == END)
break;
pc = (int)(rand() / (RAND_MAX + 1.0) * 3);
printf("あなたは:%s\n", te[player]);
printf("私は:%s\n", te[pc]);
puts(message[result[player][pc]]);
if(te,player==GU,te && te,pc==GU){
p_EVEN++;
}
else if(te,player==GU && te,pc==CHOKI){
p_WIN++;
}
else if(te,player==GU && te,pc==PA){
p_LOOSE++;
}
else if(te,player==CHOKI && te,pc==GU){
p_LOOSE++;
}
else if(te,player==CHOKI && te,pc==CHOKI){
p_EVEN++;
}
else if(te,player==CHOKI && te,pc==PA){
p_WIN++;
}
else if(te,player==PA && te,pc==GU){
p_WIN++;
}
else if(te,player==PA && te,pc==CHOKI){
p_LOOSE++;
}
else if(te,player==PA && te,pc==PA){
p_EVEN++;
}
}while (player != END);
printf( "\n" );
printf( "じゃんけんゲームの結果発表\n" );
printf("トータルで[%d]勝[%d]敗[%d]引き分けでした。\n",p_WIN,p_LOOSE,p_EVEN);
fp=fopen("test.txt","a");
fprintf(fp,"トータルで[%d]勝[%d]敗[%d]引き分けでした。\n",p_WIN,p_LOOSE,p_EVEN);
fclose(fp);
return 0;
}
このように、一応、プログラムができたところでございます。
このプログラムができてすぐ、勝敗部分等に関数を使い、TEを引数にしてJUDGEを返す関数を作ってもらいたいと課題を頂きました。
今回教えて頂きたいのは、この<<関数を使い、TEを引数にしてJUDGEを返す関数を作ってもらいたい>というところです。
正直言って、ちょっと言っている意味がわからなかったのですが、
同じ処理を何度も書かないためにする必要があるものなのかなと思っています。
関数などのサイトや、本などを見てやっていますがいまいちどうしていいかわかりません。
漠然とした質問ですが、一体TEを引数にしてJUDGEを返すとはどういうことなのでしょうか。
宜しくお願い致します。