迷路に立体交差を導入すると迷路の複雑さはぐっと延びます。
立体交差した道を描写するのは難しいので、あらかじめ通路パターンの画像を用意して、画像をつぎはぎして迷路の画像を生成します。
また、通路の延び方が複雑なので、あらかじめ規則表を作っておきます(下に規則表の一例を示します)。
立体交差の迷路を作る時の考え方は道延ばし法と同じです。
起点を決めて延ばせる方向に通路を伸ばします。
延ばせるとは、規則表によって、現在地のマスから道を延ばせて、延ばし先のマスは他から道が来れるという事です。
立体交差の途中で通路が止まると迷路として変なので、立体交差部分に道を延ばす際は、その先に更に延ばせるか追加の判定処理が必要です。
立体交差は縦と横のでどちらの道が上になるかで、2種類のパターンがありますが、迷路生成後にランダムに入れ替えれば十分です。
マス状態 | 他へ道を延ばす | 他から道が来る | 備考 | ||
方向 | 変化 | 方向 | 変化 | ||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
立体交差が連続すること | |
下 | ![]() |
下 | ![]() |
立体交差が連続すること | |
![]() |
左 | ![]() |
左 | ![]() |
立体交差が連続すること |
右 | ![]() |
右 | ![]() |
立体交差が連続すること | |
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |
||
![]() |
左 | ![]() |
左 | ![]() |
|
右 | ![]() |
右 | ![]() |
||
上 | ![]() |
上 | ![]() |
||
下 | ![]() |
下 | ![]() |