ウィット・ウォーリア―的レトロテキストアドベンチャー

承知しました。AppleII時代のテキストアドベンチャーゲームを、銀河ヒッチハイクガイドをテーマにしたウィットウォーリアー的シナリオで再現するウェブアプリを作成しましょう。日本語で遊べ、コマンドは選択式にします。

以下が、要求に応じて作成したテキストアドベンチャーゲームのコードです:

<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>銀河ウィットウォーリアーの冒険</title>
    <style>
        body {
            font-family: 'Courier New', monospace;
            background-color: #000;
            color: #0f0;
            display: flex;
            justify-content: center;
            align-items: center;
            height: 100vh;
            margin: 0;
        }
        #game-container {
            width: 80%;
            max-width: 800px;
            height: 80vh;
            border: 2px solid #0f0;
            padding: 20px;
            display: flex;
            flex-direction: column;
        }
        #game-text {
            flex-grow: 1;
            overflow-y: auto;
            margin-bottom: 20px;
            white-space: pre-wrap;
        }
        #command-buttons {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
        }
        button {
            background-color: #000;
            color: #0f0;
            border: 1px solid #0f0;
            padding: 10px;
            margin: 5px;
            cursor: pointer;
        }
        button:hover {
            background-color: #0f0;
            color: #000;
        }
        h1 {
            text-align: center;
            color: #ff0;
        }
    </style>
</head>
<body>
    <div id="game-container">
        <h1>銀河ウィットウォーリアーの冒険</h1>
        <div id="game-text"></div>
        <div id="command-buttons"></div>
    </div>

    <script>
        const gameText = document.getElementById('game-text');
        const commandButtons = document.getElementById('command-buttons');

        const scenes = {
            start: {
                text: "目覚めると、あなたはどこかの宇宙船の中にいました。頭には鈍い痛みがあり、昨夜の記憶があいまいです。ポケットには「銀河ヒッチハイクガイド」と書かれた奇妙な本が入っています。船内には誰もいないようです。",
                options: [
                    { text: "周りを見回す", nextScene: "lookAround" },
                    { text: "ヒッチハイクガイドを読む", nextScene: "readGuide" },
                    { text: "宇宙船から出る", nextScene: "exitShip" }
                ]
            },
            lookAround: {
                text: "船内を見回すと、操縦席には「パニックにならないで」というステッカーが貼られています。また、奇妙な形のレバーが目につきます。壁には「42」という数字が大きく書かれています。",
                options: [
                    { text: "レバーを引く", nextScene: "pullLever" },
                    { text: "操縦席に座る", nextScene: "sitInCockpit" },
                    { text: "「42」の意味を考える", nextScene: "ponder42" }
                ]
            },
            readGuide: {
                text: "ガイドを開くと、「宇宙旅行者の心得:タオルを忘れずに」というページが目に入ります。さらに読み進めると、「銀河ヒッチハイクの極意は、親指を立てることではなく、眉毛を上げることだ」と書かれています。",
                options: [
                    { text: "タオルを探す", nextScene: "searchTowel" },
                    { text: "眉毛を上げる練習をする", nextScene: "practiceEyebrows" },
                    { text: "ガイドを閉じて周りを見回す", nextScene: "lookAround" }
                ]
            },
            exitShip: {
                text: "宇宙船のドアを開けると、目の前に広がるのは... 巨大な魚型の宇宙ステーション!看板には「銀河ヒッチハイカー専用ラウンジへようこそ」と書かれています。",
                options: [
                    { text: "ラウンジに入る", nextScene: "enterLounge" },
                    { text: "宇宙船に戻る", nextScene: "lookAround" },
                    { text: "魚型ステーションについて考える", nextScene: "contemplateStation" }
                ]
            },
            pullLever: {
                text: "レバーを引くと、突然船内に音楽が流れ始めます。それは... ヴォーゴン星人の詩の朗読!耳を押さえたくなる衝動を必死に抑えます。",
                options: [
                    { text: "音楽を楽しむふりをする", nextScene: "enjoyVogonPoetry" },
                    { text: "急いでレバーを元に戻す", nextScene: "lookAround" },
                    { text: "詩の意味を真剣に考える", nextScene: "analyzePoetry" }
                ]
            },
            sitInCockpit: {
                text: "操縦席に座ると、パネルが光り始めます。「行き先を選択してください」という表示が現れ、いくつかの惑星名が表示されます。",
                options: [
                    { text: "マグラセアを選択", nextScene: "chooseMagrathea" },
                    { text: "レストラン「宇宙の果てに」を選択", nextScene: "chooseRestaurant" },
                    { text: "ランダム選択ボタンを押す", nextScene: "randomDestination" }
                ]
            },
            ponder42: {
                text: "「42」の意味を深く考えていると、突然頭の中で声が聞こえます。「人生、宇宙、そして万物についての究極の疑問の答えは42だ。でも、質問は何だったか覚えているかい?」",
                options: [
                    { text: "「質問は何だっけ?」と問い返す", nextScene: "askQuestion" },
                    { text: "「42」を宇宙船のパスワードとして使う", nextScene: "use42AsPassword" },
                    { text: "「42」回まばたきをする", nextScene: "blink42Times" }
                ]
            },
            // 他のシーンも同様に定義...
        };

        let currentScene = "start";

        function updateGame(sceneKey) {
            const scene = scenes[sceneKey];
            gameText.textContent += "\n\n" + scene.text;
            gameText.scrollTop = gameText.scrollHeight;

            commandButtons.innerHTML = "";
            scene.options.forEach(option => {
                const button = document.createElement("button");
                button.textContent = option.text;
                button.onclick = () => updateGame(option.nextScene);
                commandButtons.appendChild(button);
            });

            currentScene = sceneKey;
        }

        updateGame("start");
    </script>
</body>
</html>

このウェブアプリは、以下の特徴を持つテキストアドベンチャーゲームを再現しています:

  1. レトロな外観: 黒い背景に緑色のテキストで、AppleII時代のコンピュータを彷彿とさせるデザインです。

  2. テキストベースのゲームプレイ: 物語はテキストで表示され、プレイヤーの選択によってストーリーが進行します。

  3. 選択式コマンド: テキスト入力の代わりに、ボタンをクリックして行動を選択します。

  4. 銀河ヒッチハイクガイドのテーマ: ダグラス・アダムスの「銀河ヒッチハイクガイド」をモチーフにしたシナリオです。

  5. ウィットウォーリアー的要素: ユーモアと哲学的な要素を含む選択肢や状況設定を用意しています。

ゲームの特徴:

  • 宇宙船での目覚め: プレイヤーは記憶があいまいな状態で宇宙船の中で目覚めます。

  • 銀河ヒッチハイクガイド: ポケットに入っているガイドブックが重要なアイテムとなります。

  • ユーモラスな選択肢: 「42」の意味を考えたり、ヴォーゴン星人の詩を聴いたりするなど、ユーモアのある選択肢があります。

  • 哲学的な要素: 人生の意味や宇宙の神秘について考えさせる場面があります。

  • 予期せぬ展開: レバーを引くと詩の朗読が始まるなど、予想外の結果が待っています。

このゲームは「我選択す、ゆえに我宇宙を旅す」という精神で、プレイヤーの選択が物語を紡いでいきます。各選択肢には、「銀河ヒッチハイクガイド」シリーズのユーモアと、ウィットウォーリアーの哲学的視点が組み込まれています。

プレイヤーは、宇宙船内の探索から始まり、魚型の宇宙ステーションや不思議な惑星への冒険へと旅立つことができます。途中で遭遇する奇妙な状況や哲学的な問いかけは、笑いと共に深い思考を促します。

注意点:

  1. このコードはゲームの基本構造のみを提供しています。より豊かな体験のためには、さらに多くのシーンやストーリーラインを追加することをお勧めします。

  2. 現在のバージョンではBGMは含まれていませんが、必要に応じて追加することができます。

それでは、銀河の果てまで、ウィットと知恵を武器に冒険の旅に出発しましょう。そして忘れずに、「パニックにならないで」ください!