JavaScriptを使ったパズルゲームの簡単な作り方!

今回は、JavaScriptを使用してパズルゲームを作りたいと思います。なぜ、Unityじゃないかって?もちろんUnityでも作れますが、JavaScriptならもっとあっさり作れちゃうからです。

100行にも満たないコードでシンプルなスライドパズルが作れるので、所要時間で言うと1時間もかからないでしょう。ですから、初めてパズルを作ってみたい初心者に是非おすすめです。

スポンサーリンク

JavaScriptを使ったパズルゲームの簡単な作り方!

概要

今回は、「スライドパズル」を作ります。どういった仕様かと言うと、9つのピースを正方形型に配置して、1つのピースを空にしておきます。

それ以外のピースには、「1~8」の数字を振っておきます。大体分かると思いますが、マウスでピースをクリックし、そのマウスの上下左右に空ピースがあれば移動させるようにします。

完成形はこのような出来栄えになります。試行回数は、移動が発生する度にカウントアップします。

ソースコードの作成

パズルのデザインに関しては、好みがあると思うので、自由にCSSを変更すれば良いと思います。

まずは、stanby関数からパズルの初期化を行います。

tr要素で行を、td要素で各ピースを作ります。2重ループfor文の外側が行を担当し、内側でピースを作成します。それぞれ3回ずつ繰り返すことで、9マスのパズルが完成する流れですね。

パズルの仕様イメージ

初期化が行われた時点で上図のような状態になります。

左上から右下に順々にインデックスが振られていますが、実際にピースに表示されてある数字はvalueに入れるようにします。

ですから、valueが0ならば空ピースということになるので、クリックしたピースの上下左右に「value=0」がいるかチェックすれば良いわけですね。

そのチェック作業を53行目以降で行っています。まずは、クリックされたピースのインデックスを取得します。

次に、上下左右どこかしらに空白が存在するか確認していきます。

  • 上ピース・・・idx-3
  • 下ピース・・・idx+3
  • 左ピース・・・idx-1
  • 右ピース・・・idx+1

それぞれのピースの求め方はこんな感じですね。

存在しない位置との比較を行わないために、それぞれのif文に別の条件を付加しておきます。

例えば、インデックスが2の場合、これ以上上の段のピースは存在しないので、上との比較を行わないようにします。

後は、いずれかの条件がtrueになったらswap関数を読んでピースを入れ替えるだけですね。

初期化された状態のまま、ゲームスタートすると、常に同じ配置から始まってしまいますので、初期化後はピースのシャッフルを行います。(46~48行目)

シャッフルは、ランダムでクリックを発生させるので、シャッフル時はカウントアップを行わないようにflagを使って制御します。

初期化が完了次第、flagをtrueにしてピースの入れ替え発生時に合わせてカウントアップします。

まとめ

今回は、JavaScriptを使ったスライドパネルの作り方について紹介しました。

Unityでゲーム制作を行う場合は、作業量が多く何記事にも跨ってしまう事が多いんですけど、JavaScriptだと作りたいゲームの内容にもよりますが、1記事で完結できるものも多そうです。