クラッシュローラーではローラーを使える範囲は限定されていますが、これをつかって敵を撃退することができます。またプレイヤーがローラーを使っているときは移動速度が若干アップし、敵の追尾を振り切ることにも使えます。ただ実演動画をみているとローラーを使っているときはUターンはできないようです。

今回はローラーで敵を踏みつぶす処理を実装します。

Rollerクラス

まずローラーの位置情報を管理するためのクラスを作成します。上下、左右に移動できるローラーがフィールド上にひとつずつ存在します。プロパティとして初期座標と現在座標、移動可能範囲を設定します。前2者は同じなので基底クラスRollerをつくってこれを継承してRollerNSクラスとRollerWEクラスをつくります。

Rollerオブジェクトを生成する

次にForm1クラスのコンストラクタ内でRollerクラスのインスタントを作成します。

CreateRollerNSメソッドとCreateRollerWEメソッドは以下のとおりです。ローラーの初期位置を求めコンストラクタに渡しています。

ローラーの初期位置は東西にかかる橋の西側と南北にかかる橋の南側なので、二次元配列 Mapを調べればわかります。Map(x, y)がPOSITION_BRIDGE_EDGEであり、その右または上がPOSITION_BRIDGE_XXならそこが初期配置をする座標となります。

またローラーの厚み(ROLLER_THICKNESS)からローラーの可動範囲もわかります。

ローラーの移動処理

必要があればローラーを移動させます。ローラーを移動させるのはプレイヤーがローラーを押すことができる位置にいて、ローラーが移動可能範囲内にある場合です。

ローラーを持っているときは速度がアップし、UターンはできなくなるのでIsHoldRollerW、IsHoldRollerE、IsHoldRollerN、IsHoldRollerSのいずれかがtrueの場合は方向転換処理ができないようにします。

Timerを2種類セットすることでローラーを持っているときはもうひとつのTimer.Tickイベントでもプレイヤーの移動処理をおこない、速度をアップさせています。

ローラーの描画処理

ローラーを追加したので描画に関する処理も追加しています。