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

スポンサーリンク
C言語

今回から「じゃんけんゲーム」を作成していこう。
対戦するのは、コンピューターと人でです。

それでは、プログラムをご紹介しよう。
なお、始めは単純なものであるが、少しずつ機能を追加するつもりである。

なお、本プログラムは、
 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言語 中級編 柴田 望洋(著)

コメント

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