サンタクロースがモンスターにプレゼント箱を投げつけて倒すゲームをつくる(1)の続きです。定義したクラスをつかってゲームを完成させます。

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

ページが読み込まれたときの処理を示します。Playerオブジェクトを生成し、canvasのサイズを調整して全面を黒で塗りつぶします。そして画像ファイルを読み込んでイメージを初期化する処理、イベントリスナの追加、効果音をレンジスライダーで調整できるようにする処理をおこないます。

イメージの初期化

画像ファイルを読み込んでイメージを初期化する処理を示します。

イベントリスナの追加

イベントリスナの追加する処理を示します。

PCのマウス操作とスマホのタップ操作に対応できるようにします。スマホ用のボタンの表示非表示を切り替えるチェックボックスの状態が変更されたときにスマホ用の操作ボタンを表示非表示が切り替えるようにします。またPCのキー操作でもプレイヤーを操作できるようにします。

効果音をレンジスライダーで調整する

効果音をレンジスライダーで調整できるように処理をおこないます

音量テストのボタンをクリックすると設定したボリュームで効果音が再生されます。

ゲームスタート時の処理

ゲームスタート時の処理を示します。

プレイ中であるにもかかわらず二重にゲームスタートの処理がおこなわれないようにチェックしています。ゲームが開始されたらスタートボタンは非表示にし、代わりにスマホ用の操作ボタンを表示させます(ただしチェックボックスにチェックがされている場合のみ)。

そのあとisPlayingフラグのセットと、各オブジェクトが格納されている配列をクリアし、スコアと残機数を初期化してPlayer.Init関数を呼び出します。これでプレイヤーが描画されるようになります。

更新と描画

更新時の処理を示します。

更新はプレイ中のときだけおこなわれます。

更新処理

各オブジェクトを更新する処理を示します。更新と同時に敵と穴の生成もおこないます。

描画処理

描画処理を示します。

当たり判定

当たり判定の処理を示します。

isHit関数は第一引数のオブジェクトと第二引数のオブジェクトが接触しているかどうかを返します。

isFallHole関数はプレイヤーが引数で渡されたHoleオブジェクトに落ちていないかを調べて結果を返します。

当たり判定後の処理

当たり判定後の処理を示します。

爆発の発生

explode関数は爆発を発生させます。この関数は32個の火花を0rad~2πrad(0度~360度)の角度で初速4~6で飛ばします。

敵を倒したときの処理

onHit関数はプレゼント箱が敵に命中したときに呼び出されます。

プレゼント箱が敵に死亡フラグをセットして爆発の火花を発生させます。効果音を鳴らしてスコアを加算します。

ミス時の処理

onDead関数はプレイヤーが敵、敵の爆弾、穴のいずれかに接触したとき(ミスをしたとき)に呼び出されます。引数がtrueのときは穴に落ちたときです。

ミスをした場合は残機を1減らして残機がある場合は、2秒後にプレイヤーの死亡フラグをクリアするとともにすべての敵オブジェクトをクリアしてゲームを再開します。残機が0になった場合はゲームオーバーの処理をおこないます。

ゲームオーバーの処理

ゲームオーバーの処理を示します。