先回までで、「じゃんけんゲーム」をプレーするうえでの必要最低限の機能は備えるようになった。
今回は、番外編として、「後出しコンピューター」のプログラムをご紹介しよう。
人が手を入力した後に、必ず勝つようにコンピューターの手を決定する「後出しじゃんけん」である。
なお、本プログラムは、
Windows 11 Home(23H2)上で、Visual Studio Code(1.93.1)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0でコンパイルしている。
//じゃんけんゲーム(後出しコンピュータ)
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int human; //人間
int comp; //コンピューター
int judge; //勝敗
int retry; //もう一度
char *hd[] = {"グー","チョキ","パー"}; //手
srand(time(NULL)); //乱数の種を設定
printf("じゃんけんをゲームを始めましょう!\n");
do
{
comp = rand() % 3; // コンピューターの手を生成
do
{
printf("\nじゃんけんポン!--->(0)グー(1)チョキ(2)パー:");
scanf("%d",&human);
} while (human < 0 || human > 2);
comp = (human + 2) % 3; // コンピューターは後出し
printf("私は%sで、あなたは%sです。\n",hd[comp],hd[human]);
judge = (human - comp + 3) % 3; //勝敗を判定
switch (judge)
{
case 0: puts("引き分けです。");
break;
case 1: puts("あなたの負けです。");
break;
case 2: puts("あなたの勝ちです。");
break;
}
printf("もう一度しますか?(0)いいえ(1)はい:");
scanf("%d",&retry);
} while (retry == 1);
return 0;
}
実行結果
じゃんけんをゲームを始めましょう!
じゃんけんポン!--->(0)グー(1)チョキ(2)パー:0
私はパーで、あなたはグーです。
あなたの負けです。
もう一度しますか?(0)いいえ(1)はい:1
じゃんけんポン!--->(0)グー(1)チョキ(2)パー:2
私はチョキで、あなたはパーです。
あなたの負けです。
もう一度しますか?(0)いいえ(1)はい:0
comp = (human + 2) % 3;
上記のコードがコンピューターが後出しして勝つために追加されている。
本プログラムで、「手」に対する理解を深めよう。
コメント