1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ハイアンドローゲームを ChatGPT で作成する

Last updated at Posted at 2024-11-25

今回はハイアンドローゲームを
ChatGPT で作成する試みをしたいと思います。


ChatGPT とのやり取り

という事で ChatGPT に以下の質問をしました。

私の質問
こんにちは、お願いがあります。

下記の仕様のハイアンドローゲームを html 形式で作成して頂けますか?

---

・起動するとアプリ側が 0 から 1000 の間のランダムな値を設定します。
・ユーザーは 0 から 1000 の値を入力してボタンを押します。
・回答した数字が正しければ正解と表示して、同時にかかった回数を表示します。
・アプリ側は 1 回嘘が付けます。
・嘘を付ける回数は 3 回回答する度に 1 増えます。
・アプリ側は High か Low で返事をしますが、嘘を付けるならば嘘を付く事ができます。
・アプリ側はなるべく回数がかかるように嘘を付きます。

すると下記の回答が返ってきました。

ChatGPT の回答
こんにちは!ハイアンドローゲームのHTML形式のコードを作成しますね。

このゲームの仕様に基づいて、ゲームを作成するために以下のようなHTML、CSS、JavaScriptコードを作成しました。JavaScript部分で、ランダムな値を生成し、嘘をつくロジックを実装しています。

html
コードをコピーする
<!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: Arial, sans-serif;
      text-align: center;
      margin: 20px;
    }
    #game-container {
      margin-top: 20px;
    }
    input, button {
      font-size: 16px;
      padding: 10px;
      margin: 10px;
    }
    #message {
      font-size: 18px;
      font-weight: bold;
      margin-top: 20px;
    }
  </style>
</head>
<body>
  <h1>ハイアンドローゲーム</h1>
  <p>0から1000の間の数字を当ててください。</p>

  <div id="game-container">
    <input type="number" id="userGuess" min="0" max="1000" placeholder="0から1000の数字" />
    <button onclick="makeGuess()">予想する</button>
    <p id="message"></p>
    <p>試行回数: <span id="attempts">0</span></p>
  </div>

  <script>
    let targetNumber = Math.floor(Math.random() * 1001); // 0 から 1000 のランダムな数字
    let attempts = 0;
    let liesAllowed = 0;
    let liesUsed = 0;

    function makeGuess() {
      const userGuess = parseInt(document.getElementById('userGuess').value);
      const messageElement = document.getElementById('message');
      const attemptsElement = document.getElementById('attempts');

      if (isNaN(userGuess) || userGuess < 0 || userGuess > 1000) {
        messageElement.innerText = "0から1000の数字を入力してください。";
        return;
      }

      attempts++;
      attemptsElement.innerText = attempts;
      const isCorrect = userGuess === targetNumber;

      if (isCorrect) {
        messageElement.innerText = `正解! ${attempts}回で当たり!`;
        resetGame();
      } else {
        if (liesUsed < liesAllowed) {
          // 嘘をつくチャンスがあれば
          if (Math.random() < 0.5) {
            // 嘘をつく
            const lieDirection = userGuess < targetNumber ? 'Low' : 'High';
            messageElement.innerText = lieDirection + "(嘘)";
            liesUsed++;
            return;
          }
        }

        if (userGuess < targetNumber) {
          messageElement.innerText = "High";
        } else {
          messageElement.innerText = "Low";
        }

        // 3回に1回嘘をつける
        if (attempts % 3 === 0) {
          liesAllowed++;
        }
      }
    }

    function resetGame() {
      targetNumber = Math.floor(Math.random() * 1001); // 新しいターゲットを設定
      attempts = 0;
      liesUsed = 0;
      liesAllowed = 0;
      document.getElementById('attempts').innerText = attempts;
      document.getElementById('userGuess').value = '';
      document.getElementById('message').innerText = '次のゲームを開始します。';
    }
  </script>
</body>
</html>
このゲームの特徴:
ターゲットのランダム値: ゲームが開始されると、アプリは 0 から 1000 の間でランダムなターゲットの数字を設定します。

ユーザーの入力: ユーザーは 0 から 1000 の間で自分の予想する数字を入力し、ボタンを押して予想を送信します。

嘘のルール: ゲーム内ではアプリ側が最初は正直に「High」または「Low」と返答しますが、3回に1回のペースで嘘をつける機会が与えられます。嘘をついた場合、その時の返答は「High」または「Low」となり、ユーザーに誤ったヒントを与えます。

正解時の表示: ユーザーが正しい数字を入力すると、「正解!」と表示され、試行回数が表示されます。次のゲームが開始されます。

説明:
makeGuess 関数で、ユーザーの入力をチェックし、ゲームの進行を管理します。
resetGame 関数で、新しいターゲット値を設定してゲームをリセットします。
嘘をつくロジックは、liesUsed と liesAllowed を使って制御され、3回ごとに嘘をつく回数が1増えます。
このコードをコピーしてHTMLファイルとして保存し、ブラウザで開けばゲームを楽しむことができます。

なんとこの質問だけで
ほとんど正常に動作するコードを
頂くことができました。

このコードを手動で微修正する事で
短時間でハイアンドローゲームを
実装する事が出来ました。

修正版は以下のサイトで
遊ぶことが出来ます。

よろしければ遊んでみて頂けると幸いです。


以上ハイアンドローゲームを
ChatGPT で制作する試みをしました。

AI を使わずに最初から実装するよりも
明らかに短時間で実装出来た自信があります。

ChatGPT は便利だなと思いました。

この記事が皆さんの ChatGPT を使うきっかけになれますように。
閲覧ありがとうございました。

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?