マップの床を、乱数だけで生成すると、歯抜けだったり、バランスが悪い。見た目もあまりよくないw
「マンホール」の時と同じように、ある程度のパターンを準備しておいて、その中から選ぶ方法を検討した。
今回も空白と床を0と1で表せるので、20ビット分のパターン文字列を作る。これも培養臼のステージデータみたいに、テキストファイルにして、noteload命令で読み込むようにしよう。
簡単なものから、歯抜けの難しいものまで用意して、上の階層に行くほど難しい床配置を増やすようにしたい。
パターンは二進数で用意しておき、適当にビットシフトしてあげれば、たくさん用意する必要なく、バリエーションを増やせる。
で、いつものごとく、Excelさん(画像はLibreOfficeだけどw)でパターンを作って、テキストファイルを作った。
テキストファイルをnoteload命令で読み込んで、あとはこのパターン群からランダムで1行取り出した。
notesel mapdata noteload "mapdata.txt" … ;マップデータから1行分ランダム取得 notesel mapdata fnum=rnd(notemax) ;ここのランダム値は処理検討中 noteget mstr,fnum ;床パターンをゲット strrep mstr,"1","2" ;床のマップNoに置き換え ;両端に壁(1)を追加 mstr="1"+mstr+"1" mbuf=mstr ;バッファに入れる notesel makemap ;マップ用変数に切り替え noteadd mstr ;マップを追加 floor=floornum-1 ;フロア数を減算 setFlag=1 ;次の処理で旗を置くためフラグをセット
こうしてランダム版よりは、多少パターンが整ったマップになった。