“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

210.HSPでゲームを作ろう:たまねとりっぷ! その8

マップの床を、乱数だけで生成すると、歯抜けだったり、バランスが悪い。見た目もあまりよくないw
「マンホール」の時と同じように、ある程度のパターンを準備しておいて、その中から選ぶ方法を検討した。

coro3.hatenablog.jp

今回も空白と床を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 ;次の処理で旗を置くためフラグをセット

こうしてランダム版よりは、多少パターンが整ったマップになった。

ランダムで床を作ったマップ
パターン化した床で作ったマップ