今回はクラッシュローラーのようなゲームを作成します。これが完成したゲームです。

『クラッシュローラー』(CRUSH ROLLER)は、1981年にアルファ電子(後のADK)が開発したアーケードゲームです。パックマンのようなドットイートタイプのゲームです。プレイヤーは刷毛のようなキャラクターで、4方向レバーで敵を避けながら画面上の迷路を全て塗りつぶすことでステージクリアを目指します。

クラッシュローラー

以下はクラッシュローラーのプレイ動画です。

通路を作成する

まず通路を作成しなければなりません。通路はプレイ動画をキャプチャして通路の部分のみを直線に置き換えたものを使います。

加工前

加工後

最初にフィード変数とコンストラクタを示します。

最後の行で使われているPositionクラスは以下のようになっています。

次にコンストラクタを示します。

通路を描画する処理を示します。二次元配列 Mapに格納されている値を調べて正の数であれば通路です。そこで先に通路の輪郭になる部分に一回り大きな矩形を描画し、そのなかに通路として白く塗りつぶされた矩形を描画します。またプレイヤーが通過した部分は別の色で塗りつぶします。

通路の一部は立体交差になっています。橋の部分を描画する処理を示します。

はじめのループで交差している点を求め、その部分に境界線を描画して通路のうえに橋がかかっているように見せかけます。そのあと橋の内部を描画します。まだ通過していない場所は白で、通過している部分は別の色で塗りつぶします。

プレイヤーを描画する処理を示します。今回は仮なのでオレンジ色の矩形を描画するだけです。

描画処理の全体を示します。立体交差になっている部分があるので、先に下になる部分の描画を先におこないます。橋の下をくぐろうとしているプレイヤーを描画してはいけないのでプレイヤーが橋の上にいるかいないかで描画するタイミングを変えています。

プレイヤーを操作する

プレイヤーを操作できるようにします。まず移動する方向を管理するための列挙体を作ります。

キーが押されたらフラグをセットして離されたらクリアします。

方向転換できるタイミングで方向転換できる方向のキーがおされている場合、方向転換の処理がおこなわれ、PlayerDirectに移動方向が格納されます。以下のメソッドはキーが押されているかどうかでプレイヤーの移動方向を求めてPlayerDirectに格納する処理をおこなう処理をしています。

実際にプレイヤーを移動させる処理です。PlayerDirectに格納されている方向に移動処理がおこなわれます。

タイマーイベントが発生したらMovePlayerメソッドを呼び出して再描画処理をおこないます。