C#で迷路をつくるの続きです。ゲームとして完成させます。

キー操作で現在位置を移動できるようにする

まずキー操作を可能にするためにOnKeyDownをオーバーライドします。現在位置がどこであるかわかるようにフィールド変数に格納します。最初はCurColum = 0、CurRow = 0です。スタート地点は左上です。

方向キーが押されたらその方向に移動できるか調べて移動できる場合は移動します。ゴールは右下です。ゴールしたら自作メソッドOnFinishを呼び出します。

左に移動できるかどうかを調べて移動できるなら移動する処理を示します。MaseGenerator.BranchPointsのなかから現在位置に相当するオブジェクトを探し出し、BranchPoint.MoveDirectsプロパティのなかからMoveDirect.Leftがあるか調べます。あれば移動可能です。CurColumをデクリントします。

同様に上、右、下も以下のように処理をします。

キーが押されたら再描画がおこなわれるのでOnPaintメソッドのなかで迷路を描画したあと赤い円で、現在位置を描画します。

それから新たに迷路が生成されたら現在位置をCurColum = 0、CurRow = 0に戻さないといけません。

タイマーを表示させる

さて、これだけではおもしろくないのでタイマーをつけます。

これを使います。

タイマーを表示するためにはTimerが必要です。それからデジタルっぽい表示をするためにリソースからBitmapを取得します。

InitTimerメソッドのなかでTimerの初期化とリソースからBitmapの取得をおこなっています。

MaseGenerateメソッドが実行されたら、現在時刻をDateTimeStartに格納してTimerをスタートさせます。

ゴールについたらタイマーを止めます。

Timer.Tickイベントが発生したらDateTimeStartからの経過時間を取得してTimeSpanに格納します。そして再描画をおこないます。

再描画がおこなわれたら迷路と現在位置のほかにタイマーを表示させます。DrawTimeメソッドのなかではタイマーの各桁の値を求めてここから描画すべきBitmapを取得します。そしてこれを描画します。