第2.31話 共同作業

 先ほど、秋晴さんとの作業通話を終えた。お風呂と夕食を終え、さっそく作業に取り掛かる。時間が無いわけではないが、早く終えるに越したことはないだろう。

 やることを簡単にまとめてみる。飛行機と敵の当たり判定、飛行機のHP、メデューサと弾の当たり判定、飛行機の状態の可視化、クリアとゲームオーバー、背景、ざっと上げればこんなものだろうか。

 リストにすれば結構あるように見えるが、ひとつひとつはそこまで難しくない。おそらく、今日と明日で出来るだろう。

 まずは、飛行機のHPから実装しよう。敵との当たり判定を実装する時のテストも、HPを減らすことでわかりやすくなる。

 まずはUIから用意する。使っているライブラリには、四角形を描画する関数も用意されているため、これを使おう。最大HPを白、現在のHPを緑にして、重ねて描画すれば、どれだけHPが削れているのかが見やすくなるはずだ。

 そして、指定した位置に指定したサイズで描画するのだが、このサイズが肝となる。HPが減ればその分だけ、横のサイズを小さくしなければならない。もしHPを回復することがあるのであれば、その分だけ大きくもする。

 計算方法は簡単で、最大HPと現在のHPの割合を求めて、横のサイズに掛けるだけである。

 次に、指定した値だけダメージを与える関数を作る。毒状態の時や、敵と当たった時に呼び出すのだ。

 関数を作ったら、さっそく毒状態の時に呼び出してみる。とりあえず、1秒毎に呼び出す処理を書いてみた。

 最大HPを設定することと、HPが0未満にならないようにする処理も忘れてはいけない。

 これでHPの実装は出来ただろう。実行して確認してみる。

 ポイズンボールと当たってから、1秒毎に緑色の四角形が削られていくのが確認できた。

 次は、敵との当たり判定を作って、そちらでも飛行機にダメージを与える関数を呼び出そう。

 敵との当たり判定だが、今まで使った当たり判定を使いまわすだけである。

 まずは、羽が生えた蛇のプログラムで、消すかどうかを入れるbool型の変数と、それを呼び出す関数を作る。そして、判定を消すにする、つまりtrueを入れる関数も作る。

 そして、羽が生えた蛇との当たり判定の処理を書き、当たった時に、飛行機にダメージを与える関数を呼び出すとともに、羽が生えた蛇を消す関数も呼び出す。

 実行して、動かしてみる。

 飛行機を羽が生えた蛇にぶつけると、蛇が消えると同時に、HPが減ったのを確認できた。

 これで、羽が生えた蛇のプログラムは、一旦完成ということでいいだろう。

 メデューサと飛行機の当たり判定はどうしようかと迷ったが、さすがに即死させるわけにはいかないので、ぶつかっても何もしないことにした。

  次に、メデューサと弾の当たり判定を実装する。これに関して気をつけるところは、メデューサが縦に大きいということだろう。他の当たり判定と同じように、円同士の計算をしてしまうと、すり抜けるところが出てきてしまう。

 対策として、円同士の当たり判定を二つ縦に並べてみることにした。これで、メデューサの形に少しでも近づけることが出来る。

 動かしてみて、メデューサと当たった時に弾が消えることを確認した。

 ついでに、クリアとゲームオーバーの実装もすることにした。

 時間が無いので、簡易的なものにしよう。本当は、スタートシーンやゲームシーンと同じように、クリアとゲームオーバーも1つのシーンとして扱いたかったのだが、UIとしてゲーム画面に画像を表示するだけにする。秋晴さんに頼んだ大文字のアルファベットを書いた画像だ。今回は代替えとして、ライブラリの機能で文字を描画させることにする。

 まずは、クリアしたかどうかとゲームオーバーかどうかを入れるための変数を作る。

 そして、このクリアしたかどうかゲームオーバーしたかどうかを常に判定して、敵を生成するかなどを決めていく。気を付けなければいけないことはせいぜい、クリアした後でゲームオーバーにしたり、その逆のことをしたりしないことだろう。

 次に、クリアとゲームオーバーの条件を考える。とりあえず、クリアはボスを倒したとき、つまりメデューサのHPを0にした時にして、ゲームオーバーは飛行機のHPが0になった時にしよう。

 そして、クリアもしくはゲームオーバーの画像が出てる間、エンターキーを押すとスタート画面に戻る処理も書く。 

 実行して動かしてみる。

 敵とぶつかって飛行機のHPを0にすると、Gameoverという文字が描画された。エンターキーを押して、スタート画面に戻ることも確認する。そのまま次は、メデューサを倒してみる。Clearという文字とスコアが描画された。いちおうここでもエンターキーを押して、スタート画面に戻ることも確認した。

 やっつけ仕事ではあったが、それなりに進めることが出来た。喜びと肩こり防止を兼ねて、両腕を上げる。なぜかあくびが出た。今日はぐっすり眠れそうだ。

  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る