【バビロニアン・キャッスル・サーガ】

このエントリーをはてなブックマークに追加
587遠藤雅伸
>>112
S> マップが違うのはある程度あきらめてたけど。

 これは画期的なことかも知れないんだけれど、TODは1フロアにつきマ
ップのデータを1バイトしか持っていません。つまり、プログラム的に
はマップという概念がないんですね。ちょっと難しいのですが、説明し
ます。

 TODの迷路は、まず全ての柱を想定します。そして、最初の1本を選
び、そこから面数を根とした乱数によって、0〜3の数を導き出し、そ
れに相当する方向(ex.0:上、1:右、2:下、3:左)に壁を作ります。そ
れが外壁か別の壁に接触しなければ、新しい根より0〜2の乱数をもと
め、そちら方向(ex.0:進行方向左、1:まっすぐ、2:進行方向右)へ壁
を伸ばします。これを外壁か別の壁に接触するまで続けます。
 もし外壁か別の壁に接触した場合、最初に選んだ柱から順番に、まだ
壁の通過していない柱を選んで同じ処理を繰り返します。壁の通過して
いない柱がなくなると迷路の完成、結果として、迷路のある地点Aから
別の地点Bまで1通りしかルートのない、狭義の意味での迷路ができる
のです。

 このフロアを元にした乱数の根を255にすると、なぜか整然とした迷路
になってしまったので、これを特別に最上階60階の迷路用の根として、
残りはフロア数がそのまま迷路のデータとなっているのです。

 あのフロア全てをデータで持つと大変なのですが、このような方式で
作成しているため、全く同じ方法を取ったとしても、迷路のサイズが異
なれば構造が違ってしまうわけです。遠藤としては、最上階以外のフロ
アの形状に関しては、まったく関心がなかったので、移植が同じ方法で
迷路を生成しているのは、かえって新鮮で良いのでは?と思いました。