- ベストアンサー
C言語で乱数を使ったじゃんけんゲームを作成し、勝敗を表示するプログラムの解説
- C言語を使用して乱数を使ったじゃんけんゲームを作成するプログラムの解説です。
- プログラムでは、プレイヤーがグー、チョキ、パーの中から手を選び、乱数で生成された相手の手と比較して勝敗を表示します。
- 5回戦行われ、最後に勝利回数、敗北回数、引き分け回数が表示されます。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 因みに、質問者の書き方にしたがって書くと #include <stdio.h> #include <stdlib.h> #include <time.h> int main(){ int a,c,i; // 勝敗用変数 int win,lose,draw; // 変数の初期化 win = 0; lose = 0; draw = 0; // タイトルの表示 printf("じゃんけんをしましょう。\n"); // 乱数の初期化 srand(time(NULL)); for(i=1; i<=5; i++){ // コンピュータの手を決定 c = rand()%3+1; // 人間の手を入力 printf("(グー=1 チョキ=2 パー=3):"); scanf("%d",&a); // 勝ち負けの判定 if(a==1 && c==1){ printf("私もグー=1なので、あいこです。\n"); draw++; } else if(a==1 && c==2){ printf("私はチョキ=2なので、あなたの勝ちです。\n"); win++; } else if(a==1 && c==3){ printf("私はパー=3なので、あなたの負けです。\n"); lose++; } else if(a==2 && c==1){ printf("私はグー=1なので、あなたの負けです。\n"); lose++; } else if(a==2 && c==2){ printf("私もチョキ=2なので、あいこです。\n"); draw++; } else if(a==2 && c==3){ printf("私はパー=3なので、あなたの勝ちです。\n"); win++; } else if(a==3 && c==1){ printf("私はグー=1なので、あなたの勝ちです。\n"); win++; } else if(a==3 && c==2){ printf("私はチョキ=2なので、あなたの負けです。\n"); lose++; } else if(a==3 && c==3){ printf("私もパー=3なので、あいこです。\n"); draw++; } else{ printf("正しい手を入れてください。\n"); } } // 結果表示 printf("%d勝%d敗%d引き分けでした。\n",win,lose,draw); return 0; } こうなります。 ※こんな作り方はしませんけどね…。 ※乱数を初期化するのは1回で十分。 ※if文の連続は見苦しい。
その他の回答 (2)
- edomin7777
- ベストアンサー率40% (711/1750)
#1です。 > そこで、続きをしたのですが、うまく、勝敗ができませんでした。 どう書いたの?
- edomin7777
- ベストアンサー率40% (711/1750)
最初に、 > for(i=i; i<=5; i++) 見直しなさい。 で、回答ですが ・「勝ち」、「負け」、「あいこ」に対応する変数を持ち初期化する。 例) int win,lose,draw; win = 0; lose = 0; draw = 0; ・それぞれの勝ち負けあいこを表示しているところの次でそれぞれの変数に1を加える。 例) printf("私もグー=1なので、あいこです。\n"); draw++; ・ループから抜けたところで「勝ち」「負け」「あいこ」の変数を表示する。 例) printf("%d勝%d敗%d引き分けでした。\n",win,lose,draw); return 0; でおしまい。
補足
iになっていましたね。指摘ありがとうございます。 そこで、続きをしたのですが、うまく、勝敗ができませんでした。 結果が、10勝10敗25引き分けと表示されます。 5回戦なのに。 これは、なぜなのでしょうか。