ゲームオーバーを実装
ゲームオーバーになる条件は
- プレイヤーが画面下端まで落ちる
- プレイヤーがブロックに衝突する
だったが、このうち 1. は 2. より簡単そうなので、このタイミングで実装する
加えて、ゲームオーバー後にクリックしたらリセット → もう一度遊べるようにする
準備: setup/draw の中身を整理する
理由
- 初期化処理が
setup()
の中にあると「リセットして最初に戻る」のがやりにくい draw()
の中身が増えてきたので、更新処理/描画処理 の2つに分けて整理したい-
setup()
/draw()
は p5.js スケッチを実行するときの入り口にあたる。
入り口をシンプルに保っておくと全体の複雑化に対応できる
やること
以下のそれぞれについて、新たに専用の関数を用意し、
「setup/draw 他」セクションから「ゲーム全体に関わる部分」セクションへ引っ越す
setup()
の中の初期化処理draw()
の中の更新処理draw()
の中の描画処理mousePressed()
の中身(マウスボタンが押されたときの処理)
まず引越し先を用意する
|
|
引っ越す
「setup/draw 他」セクションに書いてあった処理が、特に変更されることなく
「ゲーム全体に関わる部分」セクションにごっそり移動している
|
|
プレイ/ゲームオーバー の2状態を作って切り替える
ゲームオーバー状態がプレイ状態と異なる点
- 画面の動きが止まる
- “GAME OVER” と表示される
- マウスボタンを押したらリセットされる
やること
- プレイ/ゲームオーバー の状態を管理する変数を用意する
-
ゲームのリセット処理
- プレイ状態で始まるようにする
-
ゲームの更新処理
- ゲームオーバー状態のときは動きを止める(エンティティを更新しない)
- プレイヤーが死んでいたらゲームオーバー状態にする
-
ゲームの描画処理
- ゲームオーバー状態のときは通常の描画に加えて “GAME OVER” と表示する
-
マウスボタンを押したときの処理
- プレイ状態ならジャンプ(従来どおり)
- ゲームオーバー状態ならリセット
必要な関数が揃っている、と仮定して書いてみる
※ このコードは動きません(playerIsAlive()
と
drawGameoverScreen()
が存在しないため)
|
|
必要な関数を実装して完成
playerIsAlive()
と drawGameoverScreen()
を実装しただけ
|
|
動かしてみて、
- プレイヤーが画面下端まで来たらゲームオーバーになる
- ゲームオーバーになっているとき、マウスボタンを押すとリセットされる
などを確認してください。