今回から「じゃんけんゲーム」を作成していこう。
対戦するのは、コンピューターと人でです。
それでは、プログラムをご紹介しよう。
なお、始めは単純なものであるが、少しずつ機能を追加するつもりである。
なお、本プログラムは、
Windows 11 Home(23H2)上で、 Visual Studio Code(1.93.1)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で コンパイルしている。
//じゃんけんゲーム(その1)
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int human; //人間
int comp; //コンピューター
int judge; //勝敗
int retry; //もう一度
srand(time(NULL)); //乱数の種を設定
printf("じゃんけんゲームを始めましょう!\n");
do
{
comp = rand() % 3; // コンピューターの手を生成
printf("じゃんけんポン!(0)グー(1)チョキ(2)パー:");
scanf("%d",&human);
printf("私は");
switch (comp)
{
case 0: printf("グー");
break;
case 1: printf("チョキ");
break;
case 2: printf("パー");
break;
}
printf("です。\n");
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)はい:1
じゃんけんポン!(0)グー(1)チョキ(2)パー:1
私はグーです。
あなたの負けです
もう一度しますか (0)いいえ(1)はい:0
コンピューターの手は乱数で決定している。
また、手の入力を文字にするとタイプミスが発生する可能性があり、何よりも手間なので、
じゃんけんポン!(0)グー(1)チョキ(2)パー:
と、数値を入力させている。
勝敗の判定
人の手の変数を「human」、コンピューターの手の変数を「comp」としている。
そして、「引き分け」、「勝ち」、「負け」の判定は、(human – comp + 3) % 3 で行う。
この値が0であれば引き分け、1であれば人の負け、2であれば人の勝ちとなる。
(参考)新・明解C言語 中級編 柴田 望洋(著)
コメント