JavaScriptで黒ひげ危機一発をつくります。

HTML部分

HTML部分を示します。

style.css

JavaScript部分

主な定数とグローバル変数を示します。

index.js

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

ページが読み込まれたときにおこなわれる処理を示します。

canvasを黒で塗りつぶし刀を刺す部分を要素として追加(後述)します。

イベントリスナの追加

刀を刺す部分を要素として追加する処理を示します。div要素を生成してその内部に画像を表示させています。そしてクリック時に対応するためにイベントリスナを追加しています。

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

プレイ中でない場合はなにもしません。またすでに選択されたボックスがクリックされた場合もなにもしません。それ以外の場合は要素内に表示される画像をチェック済みのものに入れ替えます。

そのあと選んではいけないもの(乱数で0~14がdeadIDに格納されている)を選ばなかった場合は効果音を鳴らして残りの個数を1減らします。それによって残り1になった場合はゲームクリアです。選んではいけないものを選んでしまった場合はonGameOvered関数(後述)が呼びだされてゲームオーバーの処理がおこなわれます。

ゲーム開始時の処理

ゲーム開始ボタンがクリックされたときの処理を示します。

ゲームオーバー時とゲームクリア時の処理

ゲームオーバー時とゲームクリア時におこなわれる処理を示します。

黒ひげが樽から飛び出してくる演出をするため、黒ひげの描画と移動をするフラグをセットします。実際の描画は更新処理をするupdate関数(後述)内でおこないます。そのあとしばらく時間をおいてから再挑戦用のボタンを表示します。

描画の更新

描画を更新する処理を示します。ここではcanvas全体を黒で塗りつぶし、樽と残り個数、ゲームオーバー時には黒ひげの描画処理もおこなっています。

黒ひげの移動と描画処理をしている部分を示します。

ゲームオーバーではないときは黒ひげの描画をする必要はないのでなにもしていません。描画するときはisMovingKurohigeフラグを参照して黒ひげを移動させる必要があるかを調べます。移動させる場合は最初は上へ移動させ、途中から下方向へ折り返す移動をさせます。黒ひげのY座標はその最小値とこれまでの移動量から求めています。

ボリューム調整関連

ボリューム調整関連の処理を示します。効果音の定数名が違うだけで他はいつもと完全に同じです。