c言語でゲーム 数当て | とり助といえばゲーム作家のとり助河田金

とり助といえばゲーム作家のとり助河田金

「とり助ゲーム」とは、とり助自作のもので、
紙ベースのドイツゲームといった
アナログゲームのことです。特に、ボードゲーム(ボドゲ)
や、カードゲーム(カドゲ)の事であり、
とびぬけておもしろいのもののこと。

C言語でランダムな数字を当てるゲームを作成することができます!以下に、数当てゲームの基本的なアルゴリズムとサンプルプログラムを示します。

  1. 正解の数字を用意する:

    • プログラム内でランダムに生成された正解の数字を選びます(例えば、1から100までの範囲でランダムに選ぶ)。
  2. プレイヤーの入力を受け付ける:

    • プレイヤーに数字を入力してもらいます。
  3. Hit数とBlow数を表示する:

    • プレイヤーが入力した数字と正解の数字を比較します。
    • Hit数:正解と一致している桁数
    • Blow数:位置は違うが正解に含まれている桁数
  4. ゲームクリアでない場合は2に戻る:

    • ゲームクリア条件(全ての桁が一致する)に達していない場合は、プレイヤーに再度入力を促します。
  5. ゲームクリアを表示する:

    • 全ての桁が一致した場合、ゲームクリアとして終了します。

以下は、C言語で実装したサンプルプログラムです。このプログラムは、プレイヤーが1から100までの数字を当てるゲームです。プレイヤーが入力した数字と正解の数字を比較し、Hit数とBlow数を表示します。


#include <stdio.h>

#include <stdlib.h>

#include <time.h>


int main() {

    // 正解の数字をランダムに生成

    srand(time(NULL));

    int answer = rand() % 100 + 1;


    int guess, attempts = 0;

    int hit, blow;


    printf("1から100までの数字を当ててください。\n");


    do {

        printf("予想した数字を入力してください: ");

        scanf("%d", &guess);

        attempts++;


        // Hit数とBlow数を計算

        hit = 0;

        blow = 0;

        int temp_answer = answer;

        int temp_guess = guess;


        for (int i = 0; i < 2; i++) {

            int digit_answer = temp_answer % 10;

            int digit_guess = temp_guess % 10;


            if (digit_answer == digit_guess) {

                hit++;

            } else {

                blow++;

            }


            temp_answer /= 10;

            temp_guess /= 10;

        }


        printf("Hit数: %d, Blow数: %d\n", hit, blow);


    } while (hit != 2); // 2桁全て一致するまで繰り返す


    printf("おめでとうございます!正解は%dでした。%d回目の試行でクリアしました。\n", answer, attempts);


    return 0;

}