0
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?

JavaScriptでマルバツゲームを作ってみた

Posted at

JavaScriptでマルバツゲームを作ってみた

この記事では、JavaScriptを使ってシンプルなマルバツゲームを作成したコードを紹介します。このゲームでは、ボタンをクリックすることでプレイヤーが「X」または「O」を入力し、勝者が決まる仕組みになっています。

コードの解説

HTML部分

<style>button{font-size:50;width:100;height:100</style>
<body id=b><script>
	z=3,c=0;
	p=Array(Z=z*z).fill(g=".");
	m=n=>{
		p[n]==g&&(p[n]=c++%2?"X":"O");
		(s=p[n])!=g&&[p.filter((_,i)=>i%(z+1)==0),p.filter((_,i)=>i&&i-Z+1&&i%(z-1)==0),p.filter((_,i)=>i%z==n%z),p.slice(0+(N=~~(n/z)*z),z+N)].some(e=>[...new Set(e)]==s&&alert("win",m=n=>0));
		b.innerHTML=p.map((v,i)=>`${i%z?"":"<br>"}<button onclick=m(${i})>${v}</button>`).join``
	};m()
</script>

1. スタイル部分

<style>
  button{font-size:50;width:100;height:100}
</style>
  • ここでは、ボタンのフォントサイズやサイズを設定しています。ボタンは大きめに設定して、視覚的にインタラクティブに見えるようにしています。

2. ゲームロジック

z=3, c=0;
p=Array(Z=z*z).fill(g=".");
  • z=3 で盤面のサイズを決めています。ここでは3x3の盤面を作成しています。
  • p=Array(Z=z*z).fill(g="."); で盤面を初期化しています。最初はすべてのセルを「.」で埋めています。
m=n=>{
  p[n]==g&&(p[n]=c++%2?"X":"O");
  (s=p[n])!=g&&[p.filter((_,i)=>i%(z+1)==0),p.filter((_,i)=>i&&i-Z+1&&i%(z-1)==0),p.filter((_,i)=>i%z==n%z),p.slice(0+(N=~~(n/z)*z),z+N)].some(e=>[...new Set(e)]==s&&alert("win",m=n=>0));
  b.innerHTML=p.map((v,i)=>`${i%z?"":"<br>"}<button onclick=m(${i})>${v}</button>`).join``
};
m()
  • m=n=>{} は、セルがクリックされたときに呼ばれる関数です。n はクリックされたセルのインデックスを表します。
  • p[n]==g&&(p[n]=c++%2?"X":"O"); では、セルが空いている場合に「X」または「O」を代入します。c++%2 によって、ターンが交互に切り替わります。
  • 勝敗判定は、次のコードで行っています。縦、横、斜めのどれかのラインに同じ記号(「X」または「O」)が揃った場合、勝者を表示します。
[s=p[n]]!=g&&[
  p.filter((_,i)=>i%(z+1)==0),
  p.filter((_,i)=>i&&i-Z+1&&i%(z-1)==0),
  p.filter((_,i)=>i%z==n%z),
  p.slice(0+(N=~~(n/z)*z),z+N)
].some(e=>[...new Set(e)]==s&&alert("win",m=n=>0));

3. ゲーム盤の表示

b.innerHTML=p.map((v,i)=>`${i%z?"":"<br>"}<button onclick=m(${i})>${v}</button>`).join``
  • p.map() を使って、盤面の各セルにボタンを配置します。ボタンのクリックイベントで、m() 関数が呼び出されるようになっています。
  • 各ボタンには現在のセルの状態(「X」または「O」)が表示されます。

4. ゲーム開始

m()
  • 最後に m() を呼び出すことで、ゲームが初期化され、最初の盤面が表示されます。

結果

このコードを実行すると、3x3のマルバツゲームがブラウザに表示されます。ユーザーはボタンをクリックして「X」や「O」を入力し、勝者が決まるとアラートが表示されます。


まとめ

このコードは非常にシンプルで、基本的なマルバツゲームのロジックを紹介しています。実際のゲームに必要な要素(ターン交代、勝敗判定、再スタートなど)を実装することで、さらに発展させることができます。

0
0
0

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
0
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?