JavaScript ワイはあの娘とつながっているんや!をつくる(1)の続きです。今回はゲームとして動作するようにします。

ページが読み込まれたときの処理

ページが読み込まれたときの処理を示します。

Playerオブジェクトを生成し、canvasのサイズを設定します。また描画用の画像ファイルを読み込みます。そのあとイベントリスナを追加し、ボリュームを設定できるようにします。

ボリューム調整可能にする

ボリュームを調整するための処理は以下のとおりです。

イベントリスナの追加

スタートボタンをクリックすることでゲームを開始したり、ボタンをクリックまたはPCでキーを操作することでプレイヤーを操作できるようにするためにイベントリスナを追加します。

ゲームをスタートする処理

スタートボタンを非表示にしてプレイヤーを操作するためのボタンを表示させます。Playerオブジェクトを初期化して、スコアをリセットし、敵とアイテムが格納されている配列をクリアします。そして最初の敵を作り、更新処理を開始させます。

描画更新の処理

描画処理はつねにおこないますが、移動の処理はstopUpdate == false のときだけにします。こうすることでゲームオーバー時は動きが止まって見えます。またゲームオーバー時はゲームオーバーの文字列も描画します。

clearCanvas関数はcanvas全体を黒で塗りつぶします。

敵、アイテムの生成

createCharcter関数は敵やアイテムをランダムに生成します。単に乱数で処理をすると敵がいない状態が長く場合があるので、敵がひとつもいないときは常に生成します。アイテムはフィールドにひとつも存在しない場合のみ生成します。

当たり判定

敵と衝突した場合は糸の耐久度を1下げます。アイテム1をゲットした場合は糸の耐久度を1上げます。ただし最大値を超えて上がることはありません。アイテム2をゲットした場合は糸を短くします。アイテムをゲットした場合は10点を加点します。いずれの場合も効果音を鳴らします。

そのあと死亡フラグが立っているオブジェクトやフィールドの外に出たオブジェクトを配列から除去します。

当たり判定の処理がおわって糸の耐久度が0以下になっている場合はゲームオーバーの処理をおこないます。

drawScore関数はスコアを、drawGameOver関数はゲームオーバーのときにゲームオーバーの文字列を描画します。

ゲームオーバーの処理

ゲームオーバーになったときは、プレイヤー操作用のボタンを非表示にします。そして糸が切れて「あの娘」がどこかへ飛んでいく演出をします。そのあと移動処理を止めるフラグをセットします。しばらく待機したあとゲームオーバーの効果音と再挑戦用のボタンを表示する処理をおこないます。