C言語のきほん「じゃんけんゲーム」(2)

スポンサーリンク
C言語

先回は、「じゃんけんゲーム」のプログラムをご紹介した。

このプログラムでは、人が手を入力すると、コンピューターの手が表示された。

今回は、コンピューターの手だけでなく、人の手も表示するように変更してみよう。

なお、本プログラムは、
 Windows 11 Home(23H2)上で、Visual Studio Code(1.93.1)を使用して作成し、gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0で   コンパイルしている。

//じゃんけんゲーム(その2)

#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;  //  コンピューターの手を生成

        do
        {
           printf("\nじゃんけんポン!--->(0)グー(1)チョキ(2)パー:");
            scanf("%d",&human);

        } while (human < 0 || human > 2);
       

        printf("私は");
        switch (comp)
        {
        case 0: printf("グー");
            break;
        case 1: printf("チョキ");
            break;
        case 2: printf("パー");
            break;
        
        }
        printf("で、あなたは");

         switch (human)
        {
        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)パー:1
私はパーで、あなたはチョキです。
あなたの勝ちです。
もう一度しますか?(0)いいえ(1)はい:1

じゃんけんポン!--->(0)グー(1)チョキ(2)パー:3

じゃんけんポン!--->(0)グー(1)チョキ(2)パー:0
私はグーで、あなたはグーです。
引き分けです。
もう一度しますか?(0)いいえ(1)はい:0

人の手を読み込む部分にdo文を導入した。0、1、2のみを受け付けるようにしている。
do文が終了した時点でのhumanの値は、必ず0以上2以下となる。

なお、今回は、人の手を表示するswitch文を追加している。

ただし、コンピューターの手を表示するswitch文とほとんど同じである。

また、手の表記、「グー」、「チョキ」、「パー」が独立した文字リテラルとして何度も現れる。

この辺りは改良の余地がありそうである。

参考)新・明解C言語 中級編 柴田 望洋(著)

コメント

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