犯人を見つけろ!
ゲームを始めてください。
<!DOCTYPE html> <html> <head> <title>犯人を見つけろ!</title> </head> <body> <div id="game"> <h1>犯人を見つけろ!</h1> <p id="status">ゲームを始めてください。</p> <button onclick="startGame()">ゲームを始める</button> </div> <script> function startGame() { // プレイヤーの名前を入力する var playerName = prompt("プレイヤーの名前を入力してください。"); if (playerName == null || playerName == "") { playerName = "Player"; } // プレイヤーの人数を入力する var numPlayers = prompt("プレイヤーの人数を入力してください。"); if (numPlayers == null || numPlayers == "" || numPlayers < 5) { alert("5人以上でプレイしてください。"); return; } // 犯人をランダムに選択する var criminalIndex = Math.floor(Math.random() * numPlayers); // プレイヤーのリストを作成する var players = []; for (var i = 0; i < numPlayers; i++) { if (i == criminalIndex) { players.push({name: "犯人", isCriminal: true}); } else { players.push({name: "プレイヤー" + (i+1), isCriminal: false}); } } // ゲーム画面を表示する var gameDiv = document.getElementById("game"); gameDiv.innerHTML = ""; var h1 = document.createElement("h1"); h1.innerHTML = "犯人を見つけろ!"; gameDiv.appendChild(h1); var p = document.createElement("p"); p.innerHTML = playerName + "さん、あなたは" + players[0].name + "です。"; gameDiv.appendChild(p); // ゲームを開始する var currentPlayerIndex = 0; var currentQuestionIndex = 0; var currentSuspectIndex = -1; var numQuestions = 3; var numGuesses = 3; updateStatus(); function updateStatus() { // ステータスを更新する var status = document.getElementById("status"); status.innerHTML = ""; var p1 = document.createElement("p"); p1.innerHTML = "質問数: " + currentQuestionIndex + "/" + numQuestions; status.appendChild(p1); var p2 = document.createElement("p"); if (currentSuspectIndex == -1) { p2.innerHTML = "疑うプレイヤーを選んでください。"; } else { p2.innerHTML = "疑うプレイヤー: " + players[currentSuspectIndex].name; } status.appendChild(p2); } function askQuestion() { // 質問を聞く var question = prompt("質問を入力してください。"); if (question == null || question == "") { alert("質問を入力してください。"); return; } currentQuestionIndex++; if (currentQuestionIndex > numQuestions) { endGame("質問回数が上限に達しました。"); return; } var answer = players[currentSuspectIndex].isCriminal ? "はい" : "いいえ"; var reply = confirm(question + ":" + answer); if (reply) { // 疑いを深める numGuesses--; if (numGuesses == 0) { endGame("3回誤ったため、あなたは失格となりました。"); return; } } else { // 次のプレイヤーに移動する var numPlayersChecked = 0; do { currentPlayerIndex++; if (currentPlayerIndex >= numPlayers) { currentPlayerIndex = 0; } if (!players[currentPlayerIndex].isCriminal) { numPlayersChecked++; } } while (numPlayersChecked < numPlayers-1); currentSuspectIndex = currentPlayerIndex; numGuesses = 3; } updateStatus(); } function accuse() { // 犯人を指摘する var suspect = prompt("疑うプレイヤーの名前を入力してください。"); if (suspect == null || suspect == "") { alert("プレイヤーの名前を入力してください。"); return; } var suspectIndex = -1; for (var i = 0; i < players.length; i++) { if (players[i].name == suspect) { suspectIndex = i; break; } } if (suspectIndex == -1) { alert("その名前のプレイヤーはいません。"); return; } if (players[suspectIndex].isCriminal) { endGame("正解! " + suspect + "さんが犯人でした。"); } else { numGuesses--; if (numGuesses == 0) { endGame("3回誤ったため、あなたは失格となりました。"); } else { alert("残念! " + suspect + "さんは犯人ではありませんでした。"); } } } function endGame(message) { // ゲームを終了する var gameDiv = document.getElementById("game"); gameDiv.innerHTML = ""; var h1 = document.createElement("h1"); h1.innerHTML = "犯人を見つけろ!"; gameDiv.appendChild(h1); var p = document.createElement("p"); p.innerHTML = message; gameDiv.appendChild(p); var button = document.createElement("button"); button.innerHTML = "もう一度プレイする"; button.onclick = function() { showToast("再読み込みしてください"); } gameDiv.appendChild(button); } askQuestion(); } </script> </body> </html>