HTML・CSS・JavaScriptだけで作れる!初心者でも簡単!AI対戦まるばつゲーム(三目並べ)の作り方を紹介する記事のアイキャッチイメージ。コピペ実践でWeb開発の基礎がしっかり身につきます。

開発ガイド

【コピペで完成】まるばつゲーム(三目並べ)の作り方|HTMLとJavaScriptでAI対戦を実装しよう!

「JavaScriptで何か動くものを作ってみたいけど、何から始めればいいのか分からない…」
「AI対戦のような“ちょっと本格的”なゲームを自分で作ってみたい!」

そんなあなたにぴったりなのが、今回紹介するまるばつゲーム(三目並べ・AI対戦)です。

このゲームは、HTML・CSS・JavaScriptの3つだけで動く、シンプルかつ奥深いWebゲーム。
特別なライブラリや環境構築は一切不要。
ひとつのHTMLファイルにすべてのコードを書くだけで、ブラウザ上ですぐにAIとの対戦が楽しめます!

まるばつゲーム(三目並べ)とは?

まるばつゲーム(三目並べ)は、誰でもすぐに遊べる定番の頭脳ゲームです。
3×3のマスの中に「○」と「×」を交互に置き、縦・横・斜めのどこかで3つ並べた方が勝ちという、シンプルながら奥深いルールが特徴です。

完成版を体験してみよう

このゲームの基本仕様

項目内容説明
盤面サイズ3×3(全9マス)小さな格子状のボードを使用。短時間で決着がつくのが魅力です。
プレイヤーあなた(人間) vs コンピューター(AI)AIが相手として自動で動作します。
手番の選択「先手(X)」または「後手(O)」を選択可能どちらで始めるかを自分で決められます。
勝利条件自分のマークを縦・横・斜めのいずれかに3つ並べる最初に3つ並べた方が勝ち。シンプルで直感的。
引き分け全マスが埋まって勝敗がつかない場合“引き分け”メッセージが表示されます。
リセット機能「もう一度」ボタンで再戦可能何度でも新しい対戦を楽しめます。

完成版を動かしてみよう(コピペ実行)

まずは、完成版を実際に動かしてみましょう。
このゲームは、ひとつのHTMLファイルにすべてのコードを記述する「単一ファイル構成」になっています。
つまり、特別な開発環境は必要ありません。メモ帳やVS CodeなどのテキストエディタがあればOKです。

手順①:ファイルを作成する

  1. デスクトップなど、分かりやすい場所に新しいファイルを作成します。
  2. ファイル名を marubatsu.html にしてください。
  3. テキストエディタで開き、以下のように記述します。

コードを記述する位置の目安

コード全体は次の3つのブロックで構成されています。

ブロック記述場所内容の概要
HTML構造部分<body></body> の中ゲームの盤面(3×3マス)・ボタン・メッセージなどの構造を記述します。
CSSデザイン部分<style></style> の中ボードのレイアウト、マス目のデザイン、ボタンの装飾などを定義します。
JavaScriptロジック部分<script></script> の中プレイヤー操作、AIの思考、勝敗判定、リセット処理などの動きを記述します。

完成コードをまるごと貼り付ける

下の「完成コード」をすべてコピーして、marubatsu.html に貼り付け、上書き保存します。

手順②:保存してブラウザで開く

すべてのコードを貼り付けたら、保存します。
その後、ファイルをダブルクリックして開いてみましょう

ブラウザ上に「まるばつゲーム (AI対戦)」が表示され、
マスをクリックするとAIが自動で応答するはずです。

手順③:動作を確認する

確認ポイントとして、以下の動作ができていれば成功です。

  • 先手・後手を選んでスタートできる。
  • マスをクリックすると自分のマークがつく。
  • 数秒後にAIが自動で動く。
  • 勝ち・負け・引き分けのメッセージが表示される。
  • 「もう一度」ボタンで再戦できる。

HTMLを理解しよう(ゲームの骨組み)

HTML(エイチ・ティー・エム・エル)は、Webページの設計図のようなものです。
このゲームでは、HTMLが盤面・メッセージ・ボタンなどの「目に見える部分の土台」をつくっています。

HTMLは“どんなパーツがあるか”を決める部分です。見た目や動きはCSSとJavaScriptが担当します。

ほーく
ほーく

各要素の役割を見てみよう

要素ID / クラス名役割
<div class="container">ページ全体を包む枠ゲームの中心部分。CSSで中央寄せ&余白を設定します。
<h1>タイトルページ上部にタイトル「まるばつゲーム (AI対戦)」を表示。
<div id="choiceArea">選択エリアゲーム開始前に「先手・後手」を選択する部分。
<div id="message">メッセージ表示現在の手番や勝敗をリアルタイムで表示します。
<div id="gameBoard">盤面3×3のマスがJavaScriptで生成され、ここに配置されます。
<button id="resetButton">リセットボタンゲーム終了後、「もう一度プレイ」できるようにします。

ここでのポイント

  • ID(例:id="gameBoard" はJavaScriptから操作するための“目印”です。
    JavaScriptでは document.getElementById('gameBoard') のように指定して、要素を取得します。
  • クラス名(例:.container, .select-button はCSSでデザインを指定するために使います。

IDは“名前札”、クラスは“グループ名”のようなものです。どちらもCSSやJSで操作するためのラベルです。

ほーく
ほーく

CSSでデザインとレイアウトを作ろう

HTMLが「骨組み」だとすれば、CSS(スタイルシート)は見た目を整える服や化粧のような存在です。
CSSを使うことで、まるばつゲームにグリッド状の盤面・配色・アニメーション効果・スマホ対応レイアウトを加えられます。

HTMLは“部品の配置図”、CSSは“見た目を整える設計書”なんです。

ほーく
ほーく

ゲーム全体のデザインの考え方

このCSSでは、主に以下の5つの要素をデザインしています。

要素内容主な目的
body背景や全体の中央寄せページ全体を整えて、見やすく配置
.containerゲーム本体の枠影や角丸で立体感を出す
#gameBoard盤面(3×3の格子)CSS Gridで正確なレイアウトを作成
.cell各マスの見た目背景色、フォントサイズ、クリック時の動きなど
.winner勝利ライン勝ったときに赤く光る演出を追加

CSS Gridで3×3の盤面を作る

CSS Gridは、「表のように行と列を簡単に整える機能」です。
これを使うと、3×3の格子をほんの数行で作れます。

スマホ対応(レスポンシブデザイン)

スマートフォンでも快適に遊べるように、CSSでは width: 90%max-width: 400px を使用しています。
さらに、フォントサイズは clamp() 関数で画面幅に合わせて自動調整します。

clamp(最小値, 推奨値, 最大値)
画面が小さいときは小さく、大きい画面では拡大してくれる便利な関数です。

JavaScriptでゲームを動かそう(ロジック解説)

JavaScriptは、まるばつゲームの“頭脳”にあたる部分です。
HTMLで作ったマスやボタンに「動き」や「判断力」を与えるのがこの言語の役割です。

ゲームの基本構造を理解しよう

このゲームのロジックは、大きく次の5つのパートで構成されています。

パート内容主な役割
① 初期設定変数・定数の定義盤面やAIの記号などを準備
② 盤面生成クリックできるマスを生成HTML上に3×3のマスを作る
③ プレイヤー操作クリック処理プレイヤーがマスを選んだときの動作
④ 勝敗判定勝ち・引き分けのチェック一列揃ったかどうかを判定
⑤ AIの思考コンピューターの手番処理次に打つ場所を自動的に決定

① 初期設定(ゲームの準備)

最初に、ゲームの全体を制御する変数を定義します。

ここでは「ゲームボード」を配列で管理しています。
配列とは、データを順番に並べて保存できる箱のようなものです。

配列を使うことで、どのマスに何が置かれたかを簡単に管理できます。

ほーく
ほーく

② 盤面生成(createBoard)

ゲーム開始時に、JavaScriptが自動で9つのマスを作ります。
これを行うのが createBoard() 関数です。

このようにして、HTMLに書いていなかった9つのマスをJavaScriptが自動で生成します。
addEventListener('click', handleCellClick) によって、クリックされたときの処理が紐づきます。

③ プレイヤー操作(クリック処理)

プレイヤーがマスをクリックすると、
そのマスに自分の記号(XまたはO)が表示されるようにします。

  • Number(cell.dataset.index):クリックされたマスの番号を取得。
  • makeMove():実際にマークを表示して、盤面情報を更新。
  • setTimeout(aiTurn, 700):少し待ってからAIが動くように設定。

④ 勝敗判定(checkResult)

毎回プレイヤーやAIが動くたびに、勝利や引き分けをチェックします。

この勝利条件をもとに、
checkResult() 関数が「3つ同じ記号が並んでいるか」を確認します。

これは“並びのパターン表”なんです。どの列がそろえば勝ちかを定義しています。

ほーく
ほーく

⑤ AIの思考ロジック(aiTurn)

AIはランダムではなく、勝てる手・守る手を優先して動きます。

1.自分が勝てるマスがあればそこに置く。
2.相手(プレイヤー)が次に勝てるマスがあれば防ぐ。
3.中央マスが空いていれば取る。
4.角(四隅)を優先。
5.残りのマスをランダムに選ぶ。

このような優先順位を実装することで、
AIは人間のように“考えて”動いているように見えるわけです。

実際は if文 を組み合わせたシンプルなロジックなんですよ。

ほーく
ほーく

カスタマイズしてオリジナルAI対戦を作ろう

ここまでで、AIと対戦できる基本の「まるばつゲーム(三目並べ)」が完成しました。
この章では、自分だけのオリジナル要素を加えるカスタマイズに挑戦してみましょう。

「ちょっとした変更」でもゲームの印象は大きく変わります。
初心者でもできるアレンジから、少し高度な改造まで、段階的に紹介します。

デザインを変えてみよう(CSSカスタマイズ)

まずは見た目の変更から始めましょう。
CSSのほんの数行を変えるだけで、全く違う雰囲気になります。

例:背景色をダークテーマに変更

AIの強さを調整してみよう(思考時間・ランダム要素)

AIは現状、最も効率的な手を優先して打ちます。
「全く勝てない…」という場合は、思考時間やランダム要素を少し加えると遊びやすくなります。

思考にランダム性を追加

2人対戦モードにする(PVP化)

友達と交互に遊びたい場合は、AIの処理を削除して、
クリックごとにプレイヤーが交代する仕組みに変更するだけでOKです。

作って終わりではなく、どう面白くするかを考えるのがゲーム開発の醍醐味です。

ほーく
ほーく

おすすめの学習リソース|もっとスキルを伸ばしたいあなたへ

まるばつゲーム(三目並べ)」を完成させたことで、あなたはすでに HTML・CSS・JavaScriptの基礎 に触れました。
ここからさらにステップアップするために役立つ学習リソースを紹介します。

おすすめ書籍

『ゲームで学ぶJavaScript入門 増補改訂版 ~ブラウザゲームづくりでHTML&CSSも身につく!』

  • ゲームを作りながら学べるので、退屈せずにJavaScriptの基礎が身につく
  • HTML・CSS・JavaScriptの基本を一冊で網羅、Web制作の土台が自然に理解できる
  • 13本のサンプルゲームを実際に動かせるから「作れる喜び」が味わえる
  • 初心者・中高生にもやさしい解説で、初めてのゲームプログラミングに最適

『スラスラわかるHTML&CSSのきほん』(SBクリエイティブ)

  • Web制作初心者に最適な入門書。HTMLとCSSの仕組みをやさしく解説。
  • これからWebページを作ってみたい方にぴったり。
  • レイアウトの基本やスタイルの調整方法など、実践的に学べます。
SBクリエイティブ/狩野祐東

オンライン講座編

Udemy|世界最大級のオンライン学習プラットフォーム

世界中で利用されるオンライン学習サイト。
HTML、CSS、JavaScriptの入門から応用まで、高評価の講座が数百種類揃っています。
初心者でも動画を見ながら手を動かせるので、挫折しにくいのが魅力です。

まとめ

ここまでで、あなたは 「HTML・CSS・JavaScriptだけで動くAI対戦まるばつゲーム」 を完成させました。
お疲れさまでした!

最初は難しく見えたコードも、
実際に動かして・分解して・理解していくうちに、
「なるほど、こうやってゲームが動くのか!」と感じられたはずです。

ゲーム制作は「動くものを作って学ぶ」最強のプログラミング練習です。
今回のまるばつゲームで学んだ技術は、
今後のWebアプリ開発・ツール制作・インタラクティブなUIづくりにそのまま活かせます。

次は、他のゲーム作りにも挑戦してみましょう!

関連記事

【実際に遊べるまるばつゲーム(三目並べ)はこちら。AIと対戦してみましょう!】▼

まるばつゲーム(三目並べ)を作れたあなたは、
他のゲームも作れる実力があります。
次のような作品にも挑戦してみましょう。

【作り方記事】スライドパズル(15パズル)の作り方|配列操作とアルゴリズムを学ぼう!▼

【作り方記事】神経衰弱ゲームの作り方|カードのシャッフルや一致判定アルゴリズムを学ぼう!▼

-開発ガイド
-, , , , ,