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

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

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

よし!じゃあ早速一緒にアドベンチャーゲーム始めよう!


タイトル:**「深夜のボドゲ屋からの脱出」**


舞台は2026年1月10日、夜10時過ぎ。  

いつものようにボードゲーム屋「とり助ゲームズ」に来ていたら、  

いつの間にか閉店時間過ぎてて…店員も客もいなくなってる。  

入口のシャッターは完全に閉まってるし、非常口も鍵がかかってるみたい。


所持品:

- スマホ(バッテリー78%)

- 財布

- いつものエコバッグ

- さっきまで遊んでたボードゲームの箱(「カタン」)

- ペットボトルの麦茶(半分残ってる)


今の場所:お店の中央テーブルエリア  

周囲にはボードゲームの棚がズラッと並んでる。奥にカウンター、レジ裏にスタッフ用の扉、  

左側にトイレ、右側にちょっとした休憩スペースが見える。


さて……どうする?


(行動を自由に書いてくれ!例:「棚を調べる」「トイレの方に行く」「スマホで何かする」など)  

何でもありだよ〜!



周囲を見回しながら、喉の渇きを感じて飲み水を探してみた。


まず、手元の**ペットボトルの麦茶**(半分残ってる)を確認。まだ飲めそうだけど、もっと新鮮な水が欲しいよね…。


**中央テーブルエリアの棚やテーブルをくまなくチェック**:ボードゲームの箱の中に水筒とか入ってないかな?と思って開けてみたけど、全部ゲームパーツだけ。残念。


**右側の休憩スペースへ移動**:そこに小さな冷蔵庫(ミニ冷蔵ショーケース)があった!中を覗くと…  

- エナジードリンク(数本)  

- ジュース(オレンジ、アップル)  

- **なんと、500mlのミネラルウォーターが2本**!(賞味期限切れなし、冷えてる!)  


ラッキー!冷蔵庫の扉は開いたままだったみたい。店員さんが忘れたのかな?  

**ミネラルウォーターを1本ゲット**!(所持品に追加。もう1本は残ってる)


一息ついて、水を一口飲む?それとも他の行動?


**現在の所持品更新**:  

- スマホ(バッテリー78%)  

- 財布  

- いつものエコバッグ  

- カタンの箱  

- ペットボトルの麦茶(半分残ってる)  

- **ミネラルウォーター(500ml、満タン)** ←新  


**今の場所**:休憩スペース(冷蔵庫の前)  

周囲:ソファとテーブル、雑誌ラック、自動販売機(電源オフ)、壁にポスター。


どうする?(例:「水を飲む」「冷蔵庫の残りを全部取る」「カウンターに戻る」「スマホで店員に連絡」など)  

自由に行動指定してね!





よし、まずは喉を潤そう!


**ミネラルウォーター(500ml)**を手に持って、キャップをパカッと開ける。  

冷たくて気持ちいい水がゴクゴク喉を通っていく……  

「ふぅ……生き返るわ……」  

(水分補給完了!気分が少し落ち着いた)


水を飲み終えたところで、空腹もちょっと意識し始めてるね。  

さて、**食料探し**開始!


**現在の場所:休憩スペース(冷蔵庫の前)**


まずはさっきの**ミニ冷蔵庫**をもう一度しっかりチェック。


中身再確認:

- エナジードリンク × 3本  

- オレンジジュース × 1本  

- アップルジュース × 1本  

- **ミネラルウォーター × 1本**(残り)  

→ **食べ物はゼロ**……残念、飲み物しかないみたい。


次に、休憩スペースの**小さなテーブル**の上を見てみる。  

→ あった!  

- **開封済みのポテトチップス(大袋、半分くらい残ってる)** ← 誰かが食べかけで放置したっぽい  

- **板チョコ(ビター、3かけら残ってる)** ← これも食べかけ  


賞味期限は……2025年12月だから、もう1ヶ月切れてるけど、まあ非常事態だし……いけるよね?  

(ポテチとチョコをエコバッグに放り込む。所持品に追加!)


さらに周囲を探索:

- **雑誌ラック**:ボドゲ雑誌と漫画が何冊か。食べ物はない。

- **自動販売機**:電源オフで真っ暗。叩いても反応なし。

- **ソファの下**:埃と……**飴玉が1個**転がってる!(ラムネ味)


**現在の所持品更新**:

- スマホ(バッテリー77% ←ちょっと減った)

- 財布

- いつものエコバッグ

- カタンの箱

- ペットボトルの麦茶(半分残ってる)

- ミネラルウォーター(500ml、残り半分くらい)

- **ポテトチップス(半分残り)** ← 新

- **板チョコ(3かけら)** ← 新

- **ラムネ飴 × 1個** ← 新


お腹はこれで少しはしのげそうだけど……まだ本格的な食事には程遠いね。  

このまま休憩スペースにいる?それとも別の場所で何か食べ物っぽいものがないか探す?


**今の場所**:休憩スペース  

周囲:冷蔵庫、ソファ、テーブル、自動販売機(オフ)、雑誌ラック、壁ポスター



もちろんです!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;

}