OpenTKを使って迷路をつくります。下側の画像は迷路を上から眺めた画像です。

まず迷路を作るためには壁が必要です。壁を描画するメソッドを作成します。

WallDirect.Eastとあるのは壁の面ではなく壁がどちら側に広がっているかを示すものです(WallDirect.Eastなら面は南北方向)。第1引数と第2引数は起点になる点のX座標とZ座標です。

次に迷路を描画するメソッドを作成します。迷路を作るために必要な壁の座標は自作メソッド GetWallPositionsToEast()とGetWallPositionsToSouth()で取得します。

これで迷路の描画はできますが、このときにどのように見せるかを考える必要があります。自分の位置を移動させるメソッドと光源も指定するためのメソッドが必要です。

まず光源は自分が向いている方向によって逆行にならないように常に自分の真後ろから光が照射されているようにします。そのために自分が向いている角度を保存するためのフィールド変数とプロパティを作成します。

次に常に自分の真後ろから光が照射されているように光源をセットします。

↑キーが押されたら向いている方向に移動、↓キーが押されたらバック、←キーと→キーで方向転換を行ないます。

前進、バック、方向転換のときはEyeX、EyeZ、EyeAngleプロパティを変更してラベルに表示されている文字列を変更するとともにglControlを再描画します。

glControl.Refresh()が実行されたら各プロパティの値を調べて適切な描画処理をおこないます。このとき視点や視線の変更にあわせて視界の設定が必要です。