C言語のきほん「じゃんけんゲーム」(番外編)後出しコンピューター

スポンサーリンク
Cプログラミング C言語

先回までで、「じゃんけんゲーム」をプレーするうえでの必要最低限の機能は備えるようになった。

今回は、番外編として、「後出しコンピューター」のプログラムをご紹介しよう。

人が手を入力した後に、必ず勝つようにコンピューターの手を決定する「後出しじゃんけん」である。

なお、本プログラムは、
 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;

上記のコードがコンピューターが後出しして勝つために追加されている。

本プログラムで、「手」に対する理解を深めよう。

コメント

タイトルとURLをコピーしました