じゃんけんゲームの改良版を作成しています。
(1)じゃんけんを1回した後に「続けますか?」というメッセージを画面に表示し、続ける場合は数字の1を、やめる場合は1以外の数を入力させ、続ける場合は初回に戻ってじゃんけんをし、続かない場合は終了する。
(2)じゃんけんを1回するたびにそれまでの累積の勝敗を表示する。
上記2つの仕様を加えたいのですが、
(1)printf("続けますか?\n\nはい:0 いいえ:1\n");
scanf("%d", &end);
をメイン関数に入れたところ、
実行結果
ジャンケンをしましょう。
グーは0 チョキは2 パーは5を入れます。
じゃんけんぽん!はいどうぞ:5
続けますか?
はい:0 いいえ:1
0
あなたはパーを出しました。
わたしはパーを出しました。
あいこです
終わります。おつかれさまでした。
となってしまいます。
何かほかにいい方法は無いのでしょうか?
そして(2)の仕様の作成方法がよく分かりません。
c
1include <stdio.h> 2include <stdlib.h> 3include <time.h> 4typedef enum janken { Gu = 0, Choki = 2, Pa = 5 } JPON; 5int saikoro(void) { 6 int sai; 7 srand((unsigned)time(NULL)); 8 sai =rand()%6+1; 9 return (rand() % 6 + 1); 10} 11JPON sysjan(int sai) 12{ 13 int pon; 14 15 switch (sai) { 16 case 1: pon = Gu; break; 17 case 2: pon = Gu; break; 18 case 3: pon = Choki; break; 19 case 4: pon = Choki; break; 20 case 5: pon = Pa; break; 21 case 6: pon = Pa; break; 22 } 23 return((JPON)pon); 24} 25int shoubu(JPON kenin, JPON kenout) 26{ 27 int shoubukekka; 28 29 switch (kenin) { 30 case Gu: 31 if (kenout == Gu) shoubukekka = 0; 32 else if (kenout == Choki) shoubukekka = 1; 33 else shoubukekka = -1; 34 break; 35 case Choki: 36 if (kenout == Gu) shoubukekka = -1; 37 else if (kenout == Choki) shoubukekka = 0; 38 else shoubukekka = 1; 39 break; 40 case Pa: 41 if (kenout == Gu) shoubukekka = 1; 42 else if (kenout == Choki) shoubukekka = -1; 43 else shoubukekka = 0; 44 break; 45 } 46 47 return (shoubukekka); 48} 49void watashinoken(JPON ken) 50{ 51 switch (ken) { 52 case Gu: printf("わたしはグーを出しました。\n"); break; 53 case Choki: printf("わたしはチョキを出しました。\n"); break; 54 case Pa: printf("わたしはパーを出しました。\n"); break; 55 } 56} 57void anatanoken(JPON ken) 58{ 59 switch (ken) { 60 case Gu: printf("あなたはグーを出しました。\n"); break; 61 case Choki: printf("あなたはチョキを出しました。\n"); break; 62 case Pa: printf("あなたはパーを出しました。\n"); break; 63 } 64} 65void kekka(int r) 66{ 67 switch (r) { 68 case -1: printf("あなたの負けです\n"); break; 69 case 1: printf("あなたの勝ちです\n"); break; 70 case 0: printf("あいこです\n"); break; 71 } 72} 73int main(void) { 74 JPON choken; 75 JPON sysken; 76 int ken_buf; 77 int sai; 78 int shoubukekka; 79 do { 80 printf("\nジャンケンをしましょう。\n"); 81 printf("\nグーは0 チョキは2 パーは5を入れます。\n"); 82 printf("\nじゃんけんぽん!はいどうぞ:\a"); 83 scanf("%d", &ken_buf); 84 choken = (JPON)ken_buf; 85 if ((choken != Gu) && (choken != Choki) && (choken != Pa)) 86 printf("\n@@@@正しく入れてください!@@@@\n"); 87 } while (!(choken == Gu || choken == Choki || choken == Pa)); 88 sai = saikoro(); 89 sysken = sysjan(sai); 90 shoubukekka = shoubu(choken, sysken); 91 printf("\a"); 92 anatanoken(choken); 93 watashinoken(sysken); 94 kekka(shoubukekka); 95 printf("\n終わります。おつかれさまでした。\n\n"); 96 return(0); 97}```
回答1件
あなたの回答
tips
プレビュー