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

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

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

もちろんです!Javaで数当てゲームを作成するのは楽しいプロジェクトですね。以下に、簡単な数当てゲームのサンプルコードを示します。このコードは、3つの数字を当てるゲームで、ユーザーが入力した数字と正解の数字を比較して「eat」(数字と桁が一致)と「bite」(数字のみ一致)をカウントします。

import java.io.*;

public class Numeron {
    final static int answer_size = 3;
    static int eat = 0;
    static int bite = 0;
    static int challenge = 1;

    public static void main(String[] args) {
        printDirection();
        int[] right_answer;
        right_answer = makeRightAnswer();

        while (true) {
            int[] user_answer;
            user_answer = readUserAnswer();
            checkAnswer(right_answer, user_answer);
            challenge++;
            if (eat == answer_size) {
                System.out.println("正解です。ゲームを終了します。");
                break;
            }
        }
    }

    public static void printDirection() {
        String direction = "ゲームを開始します。\n" +
                "これから0~9の" + answer_size + "つの数字を当ててもらいます。\n" +
                "同じ数字が使用されていることはありません。\n" +
                "数字と位置が合っていた場合、「eat」\n" +
                "数字が合っていて位置が間違っていた場合、「bite」としてカウントされます。\n\n";
        System.out.println(direction);
    }

    public static int[] makeRightAnswer() {
        int[] answer = new int[answer_size];
        for (int i = 0; i < answer.length; i++) {
            answer[i] = (int) (Math.random() * 10);
            for (int j = i - 1; j >= 0; j--) {
                if (answer[j] == answer[i]) {
                    answer[i] = (int) (Math.random() * 10);
                }
            }
        }
        return answer;
    }

    public static int[] readUserAnswer() {
        eat = 0;
        bite = 0;
        int[] answer = new int[answer_size];
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.println("\n" + challenge + "回目のチャレンジ");
        for (int i = 0; i < answer.length; i++) {
            try {
                System.out.print((i + 1) + "つ目の数字:");
                String a = reader.readLine();
                int b = Integer.parseInt(a);
                answer[i] = b;
            } catch (NumberFormatException e) {
                System.out.println("数字を入力してください。");
                i--;
            } catch (IOException e) {
                System.out.println("形式が間違っています。");
                i--;
            }
        }
        return answer;
    }

    public static void checkAnswer(int[] right_answer, int[] user_answer) {
        for (int i = 0; i < right_answer.length; i++) {
            for (int j = 0; j < user_answer.length; j++) {
                if (right_answer[j] == user_answer[i]) {
                    if (j == i) {
                        eat++;
                    } else {
                        bite++;
                    }
                }
            }
        }
        System.out.println(eat + " eat " + bite + " bite");
    }
}

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;

}


カラフルなボードゲームを作るのは素晴らしいアイデアですね!以下にいくつかのアイデアをご提案します:

  1. テーマの選択: ボードゲームには魅力的なテーマが必要です。例えば、宝探し、宇宙探検、または中世の冒険などが考えられます。
  2. カラフルなデザイン: プレイヤーの駒、カード、ボードなど、すべての要素に明るくカラフルな色を使用してください。色はプレイヤーの気分を盛り上げる重要な要素です。
  3. ゲームの目的: 勝利条件を明確にし、プレイヤーがゲームを通じて達成しようとする目標を設定します。例えば、最初にゴールに到達する、最も多くのポイントを獲得する、などです。
  4. ルールの簡潔さ: 複雑すぎるルールは避け、誰でも簡単に理解できるようにします。ルールブックは視覚的にもわかりやすいものにしましょう。
  5. インタラクティブな要素: 他のプレイヤーとの交渉や協力など、インタラクティブな要素を取り入れるとゲームはより楽しくなります。