ウソつきは誰だ?

誰がウソをついてると思う?

ウソつきは誰だ? hi0a.com

view source

JavaScript

    const statementPool = {
      A: {
        true: [
          "ぼくじゃないよ。Bが近くにいたのは確かだ。",
          "Cは見てないと思うよ。",
          "花瓶の音は聞こえたけど、Bが近かった。",
          "Bが驚いた顔してたよ。",
          "ぼくは座ってたから動いてない。",
          "犯人はBかCだと思う。",
          "Cは部屋に入ってすらいない。",
          "とにかく割ったのはぼくじゃない。"
        ],
        false: [
          "知らないけど、たぶんCがやったんじゃない?",
          "Bはいなかったと思うな。",
          "ぼく?いや見てないし…(目をそらす)",
          "花瓶なんてなかった気がする。",
          "全然音なんてしてないし。",
          "Cが笑ってたから怪しいよ。",
          "なんでぼくに聞くの?",
          "誰かがぶつかっただけじゃない?"
        ]
      },
      B: {
        true: [
          "Cは花瓶に近づいてなかったよ。",
          "Aは机の近くにいたと思う。",
          "Cはそのとき廊下にいたよ。",
          "Aの方から音が聞こえた。",
          "ぼくは花瓶の方を見てなかったけど、Cは遠かった。",
          "Cはトイレに行ってたよ。",
          "Cは立ってただけだと思う。",
          "花瓶を倒したのはAだと思う。"
        ],
        false: [
          "Cはめっちゃ近くにいたよ!",
          "Aが割ったとか言ってたけどね〜",
          "ぼくは寝てたから知らないよ",
          "誰も近づいてないと思う",
          "Cが投げたとか?知らないけど",
          "花瓶なんてそもそもなかったでしょ?",
          "Aが笑ってた!絶対怪しい",
          "Cは逃げたから怪しいよ"
        ]
      },
      C: {
        true: [
          "Aが割ったところを見たよ。",
          "Bは近くにいたけど何もしてない。",
          "Aが花瓶の近くで動いてた。",
          "ぼくはちょうど入ってきたところだった。",
          "Aが驚いて手を振った拍子に倒した。",
          "Bは離れた場所にいたよ。",
          "Bは何もしてなかったはず。",
          "Aの動きがちょっと怪しかった。"
        ],
        false: [
          "AがやったってBが言ってた。",
          "ぼくは外にいたから知らない。",
          "Bが投げたのを見た気がする。",
          "AもCも関係ないと思うよ。",
          "たぶん風で倒れたんじゃない?",
          "花瓶があったことすら知らない。",
          "Bが急に走り出して…",
          "Cって誰だっけ?"
        ]
      }
    };

    let truth = {
      culprit: "A", // 誰が割ったか(今は使わない)
      liar: "B"
    };

    function getRandom(arr) {
      return arr[Math.floor(Math.random() * arr.length)];
    }

    function generateGame() {
      const people = ["A", "B", "C"];
      const liar = getRandom(people);
      truth.liar = liar;

      const statementsDiv = document.getElementById("statements");
      statementsDiv.innerHTML = "";

      people.forEach(person => {
        const isLiar = (person === liar);
        const truthType = isLiar ? "false" : "true";
        const line = getRandom(statementPool[person][truthType]);

        const p = document.createElement("p");
        p.className = "statement";
        p.innerHTML = `<strong>${person}:</strong>「${line}」`;
        statementsDiv.appendChild(p);
      });

      document.getElementById("result").textContent = "";
    }

    function checkAnswer(guess) {
      const resultDiv = document.getElementById("result");
      if (guess === truth.liar) {
        resultDiv.textContent = "🎉 正解!ウソつきは " + guess + " でした!";
        resultDiv.style.color = "green";
      } else {
        resultDiv.textContent = `❌ 残念!ウソをついてたのは ${truth.liar} でした。`;
        resultDiv.style.color = "red";
      }
    }

    // 初回実行
    generateGame();

CSS

HTML

ページのソースを表示 : Ctrl+U , DevTools : F12

view-source:https://hi0a.com/game/game-lie/

ABOUT

hi0a.com 「ひまあそび」は無料で遊べるミニゲームや便利ツールを公開しています。

プログラミング言語の動作デモやWEBデザイン、ソースコード、フロントエンド等の開発者のための技術を公開しています。

必要な機能の関数をコピペ利用したり勉強に活用できます。

プログラムの動作サンプル結果は画面上部に出力表示されています。

環境:最新のブラウザ GoogleChrome / Windows / Android / iPhone 等の端末で動作確認しています。

画像素材や音素材は半分自作でフリー素材配布サイトも利用しています。LINK参照。

仕様変更、API廃止等、実験途中で動かないページもあります。