動作確認はこちらからどうぞ。

←↑→↓キーで移動、Zキーで穴を堀り、Xキーで埋めます。黄色いやさぐれひよこは落とせば死にますが、ピンク色のものは2段、青いやさぐれひよこは3段連続で落とさないと死にません。

前回はGameManagerクラスと基本的なクラスだけ作成しましたが、今回はPlayerクラスを作成します。

Playerクラス

プレイヤーを初期座標に戻す関数と穴を掘ったり埋めたりするときの音を鳴らす関数を示します。

プレイヤーの描画

プレイヤーを描画する関数を示します。プレイヤーが左右のどちらを向いているかで使用されるイメージが違います。また4種類のイメージを切り替えることで走っているように見せかけています。

プレイヤーの移動

プレイヤーを移動させるときにほんとうに移動できるかどうかを確認するための関数を示します。プレイヤーはフロアの端、未完成の穴、敵がハマった穴には移動できません。またハシゴがない場所で上下に移動したり、ハシゴの上り下りをしているときに左右に移動することもできません。

上に移動できるかどうかを確認する関数を示します。ハシゴの上端やハシゴがない位置では上には移動できません。ただしフロアからハシゴに移動するとき、8ピクセル以内のズレであれば移動できるものとして処理します。

下に移動できるかどうかを確認する関数を示します。

左右に移動できるかどうかを確認する関数を示します。フロアの両端をこえたり、ハシゴの上り下りをしているときは左右に移動できません。ただしハシゴからフロアに移動するとき、8ピクセル以内のズレであれば移動できるものとして処理します。

ハシゴとフロアのあいだを移動するとき、8ピクセル以内のズレであれば移動できるものとして処理しました。そのためズレを補正しておかないと表示がおかしくなったり当たり判定で正しい結果が得られなくなる場合があります。これを補正する関数を示します。

移動するためのキーが押されていて、移動できることが確認できたら移動させます。そのための関数を示します。

移動さきに穴があったら落ちます。その処理をおこなう関数を示します。

穴を掘る

スペースパニックでは穴を縦に並べないと倒せない敵が現れます。そこで縦に穴を並べやすいように穴のX座標はCharctorSizeの半分の整数倍に限定します。そのX座標を求めるための処理を示します。

穴はどこにでも掘れるわけではありません。1階やハシゴを上り下りしているときも穴は掘れません。それからハシゴがある位置やすでに敵がハマっている穴をさらに掘ることはできません。プレイヤーの現在位置で穴を掘ることができるかどうかを確認する関数を示します。

穴を掘ることができる場合は穴を掘ります。未完成の穴であれば深さを増やし、新規の穴であればGameManager.Holesに追加します。

穴を埋める

穴を埋める処理を示します。プレイヤーの現在位置に埋めるべき穴があるか確認し、存在する場合は埋めます。そして敵がいる穴を埋めたら敵を落とします。敵が落ちる処理はEnemyクラスのなかでおこないます。