JavaScript、HTML、および CSS を使用して 2 人用の三目並べゲームを作成する

JavaScript、HTML、および CSS を使用して 2 人用の三目並べゲームを作成する

三目並べは、3×3 のグリッドを使用する人気のあるゲームです。ゲームの目標は、3 つのシンボルを水平、垂直、または斜めの列に配置する最初のプレーヤーになることです。

HTML、CSS、および JavaScript を使用して、Web ブラウザーで実行される三目並べゲームを作成できます。HTML を使用して 3×3 グリッドを含むコンテンツを追加し、CSS を使用してゲーム デザインにスタイリングを追加できます。

その後、ゲームの機能に JavaScript を使用できます。これには、シンボルの配置、プレイヤー間の交代、勝者の決定が含まれます。

Tic-Tac-Toe ゲームの UI を作成する方法

Tic-tac-toe は、プログラミングの方法を学ぶときに作成できる多くのゲームの 1 つです。PICO-8 ゲーム開発エンジンなど、新しい言語や環境を練習するのに最適です。

Web ブラウザーで実行される Tic-tac-toe ゲームを作成するには、ページ コンテンツの HTML を追加する必要があります。次に、CSS を使用してこれをスタイルできます。

  1. 「index.html」という名前の新しいファイルを作成します。
  2. 「index.html」内に、HTML ファイルの基本構造を追加します。 <!doctype html>
    <html lang="en-US">
      <head>
        <title>Tic Tac Toe Game</title>
      </head>
      <body>

      </body>
    </html>

  3. HTML body タグ内に、各行に 3 つのセルがある 3 つの行を含むテーブルを追加します。 <div class="container">
      <table>
        <tr>
          <td id="1"></td>
          <td id="2"></td>
          <td id="3"></td>
        </tr>
        <tr>
          <td id="4"></td>
          <td id="5"></td>
          <td id="6"></td>
        </tr>
        <tr>
          <td id="7"></td>
          <td id="8"></td>
          <td id="9"></td>
        </tr>
      </table>
    </div>
  4. HTML ファイルと同じフォルダーに、「styles.css」という名前の新しいファイルを作成します。
  5. CSS ファイル内で、3 x 3 グリッドにスタイルを追加します。 table {
      border-collapse: collapse;
      margin: 0 auto;
    }

    td {
      width: 100px;
      height: 100px;
      text-align: center;
      vertical-align: middle;
      border: 1px solid black;
    }

  6. CSS ファイルを head タグに追加して、HTML ファイルにリンクします。 <link rel="stylesheet" type="text/css" href="styles.css">

ゲームボードにシンボルを順番に追加する方法

ゲームには、「X」または「O」のシンボルを持つ 2 人のプレーヤーがいます。グリッド セルの 1 つをクリックして、「X」または「O」記号を追加できます。これは、いずれかがまっすぐな水平、垂直、または斜めの行を作成するまで続きます。

この機能は、JavaScript を使用して追加できます。

  1. HTML および CSS ファイルと同じフォルダーに、「script.js」という JavaScript ファイルを作成します。
  2. body タグの末尾にスクリプトを追加して、JavaScript ファイルを HTML ファイルにリンクします。 <body>
      <!-- Your code here -->
      <script src="script.js"></script>
    </body>
  3. JavaScript ファイル内に、プレーヤーのシンボルを表す文字列を追加します。これは、「X」または「O」のいずれかです。デフォルトでは、最初のプレーヤーが「X」を配置します。 let playerSymbol = "X";
  4. ゲームが終了したかどうかを追跡する別の変数を追加します。 let gameEnded = false
  5. HTML テーブルの各セルには、1 から 9 までの ID があります。テーブルの各セルに対して、ユーザーがセルをクリックするたびに実行されるイベント リスナーを追加します。 for (let i = 1; i <= 9; i++) {
      document.getElementById(i.toString()).addEventListener(
        "click",
        function() {

        }
      );
    }

  6. イベント リスナー内で、現在のシンボルを表示するように内部 HTML を変更します。JavaScript 条件ステートメントを使用して、最初にセルが空であること、およびゲームがまだ終了していないことを確認してください。 if (this.innerHTML === "" &&! gameEnded) {
      this.innerHTML = playerSymbol;
    }
  7. クラスを HTML 要素に追加して、グリッドに表示されるシンボルのスタイルを設定します。CSS クラスの名前は、記号に応じて「X」または「O」のいずれかになります。 this.classList.add(playerSymbol.toLowerCase());
  8. 「styles.css」ファイル内に、「X」記号と「O」記号用にこれら 2 つの新しいクラスを追加します。「X」と「O」の記号は異なる色で表示されます。 .x {
      color: blue;
      font-size: 80px;
    }

    .o {
      color: red;
      font-size: 80px;
    }

  9. JavaScript ファイルで、innerHTML を変更してシンボルを表示した後、シンボルを入れ替えます。たとえば、プレーヤーが「X」を配置した場合、次のシンボルを「O」に変更します。 if (playerSymbol === "X")
      playerSymbol = "O"
    else
      playerSymbol = "X"
  10. ゲームを実行するには、Web ブラウザーで「index.html」ファイルを開いて、3 x 3 グリッドを表示します。
    ブラウザの三目並べ空のグリッド
  11. セルをクリックして、グリッドにシンボルを配置し始めます。ゲームでは、「X」と「O」のシンボルが交互に表示されます。
    シンボルを表示するブラウザの三目並べゲーム

勝者の決定方法

現時点では、プレーヤーが 3 つの連続したシンボルを配置しても、ゲームは続行されます。これを確認するには、毎ターン終了条件を追加する必要があります。

  1. JavaScript ファイル内に、新しい変数を追加して、3 x 3 グリッドのすべての可能な「勝利」位置を格納します。たとえば、「[1,2,3]」は一番上の行、「[1,4,7]」は斜めの行です。 let winPos = [
      [1, 2, 3], [4, 5, 6],
      [7, 8, 9], [1, 4, 7],
      [2, 5, 8], [3, 6, 9],
      [1, 5, 9], [3, 5, 7]
    ];
  2. checkWin() という新しい関数を追加します。 function checkWin() {

    }

  3. 関数内で、可能な勝利位置のそれぞれをループします。 for (let i = 0; i < winPos.length; i++) {

    }

  4. for ループ内で、すべてのセルにプレーヤーのシンボルが含まれているかどうかを確認します。 if (
      document.getElementById(winPos[i][0]).innerHTML === playerSymbol &&
      document.getElementById(winPos[i][1]).innerHTML === playerSymbol &&
      document.getElementById(winPos[i][2]).innerHTML === playerSymbol
    ) {

    }

  5. 条件が true と評価された場合、すべてのシンボルは直線上にあります。if ステートメント内で、ユーザーにメッセージを表示します。「win」という CSS クラスを追加して、HTML 要素のスタイルを変更することもできます。 document.getElementById(winPos[i][0]).classList.add("win");
    document.getElementById(winPos[i][1]).classList.add("win");
    document.getElementById(winPos[i][2]).classList.add("win");
    gameEnded = true;

    setTimeout(function() {
      alert(playerSymbol + "wins!");
    }, 500);

  6. この「win」CSS クラスを「styles.css」ファイルに追加します。プレーヤーが勝つと、勝ったセルの背景色が黄色に変わります。 .win {
      background-color: yellow;
    }
  7. 前の手順で追加したイベント ハンドラー内で、プレイヤーがターンするたびに checkWin() 関数を呼び出します。 for (let i = 1; i <= 9; i++) {
      // Whenever a player clicks on a cell
      document.getElementById(i.toString()).addEventListener(
        "click",
        function() {
          if (this.innerHTML === "" &&! gameEnded) {
            // Display either "X"or "O"in the cell, and style it
            this.innerHTML = playerSymbol;
            this.classList.add(playerSymbol.toLowerCase());

            // Check if a player has won
            checkWin();

            // Swap the symbol to the other one for the next turn
            if (playerSymbol === "X")
              playerSymbol = "O"
            else
              playerSymbol = "X"
          }
        }
      );
    }

ゲームボードをリセットする方法

プレイヤーがゲームに勝ったら、ゲーム ボードをリセットできます。同点の場合は、ゲームボードをリセットすることもできます。

  1. HTML ファイルで、表の後にリセット ボタンを追加します。 <button id="reset">Reset</button>
  2. リセット ボタンにスタイルを追加します。 .container {
      display: flex;
      flex-direction: column;
    }

    #reset {
      margin: 48px 40%;
      padding: 20px;
    }

  3. JavaScript ファイルで、ユーザーがリセット ボタンをクリックするたびに実行されるイベント ハンドラーを追加します。 document.getElementById("reset").addEventListener(
      "click",
      function() {

      }
    );

  4. グリッド内のセルごとに、getElementById() 関数を使用して HTML 要素を取得します。innerHTML をリセットして「O」と「X」の記号を削除し、その他すべての CSS スタイルを削除します。 for (let i = 1; i <= 9; i++) {
      document.getElementById(i.toString()).innerHTML = "";
      document.getElementById(i.toString()).classList.remove("x");
      document.getElementById(i.toString()).classList.remove("o");
      document.getElementById(i.toString()).classList.remove("win");
      gameEnded = false;
    }
  5. 「index.html」ファイルを Web ブラウザで開いてゲームを実行します。
  6. グリッドに「X」と「O」の記号を配置し始めます。シンボルの 1 つが勝つようにしてください。
    三目並べの勝者
  7. リセットボタンを押してゲームボードをリセットします。
    リセットボタン付き三目並べ

ゲームを作ってJavaScriptを学ぶ

JavaScript でさらに多くのプロジェクトを作成することで、プログラミング スキルを継続的に向上させることができます。JavaScript や HTML などのクロスプラットフォームのオープン テクノロジを使用して、Web 環境で簡単なゲームやツールを簡単に作成できます。

プログラムを書く練習ほど、プログラミングを上達させる良い方法はありません!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です