どとえブログ

創作活動を書き込んでいます!よろしくおねがいします!

迷路生成のアルゴリズム(棒倒し法)!

   

私がScratchで作っているゲーム、
「ラピリンス脱出」で使われる「棒倒し法」について解説をします! 


このブログの目次

●「ラピリンス脱出」を紹介!
●「棒倒し法」とは?
●どうやって「宝箱」を設置しているの?

「ラピリンス脱出」を紹介!

まず「ラピリンス脱出」というゲームを紹介します!
これは去年の10月からScratchでずっと作り続けていたものでランダムで生成される
迷路を攻略して「経験値」を獲得し「メインストーリー」を攻略するゲームです!


 

▲集めた経験値でスキル、アイテムをゲットしています。
 …なんだこの右のロボットは!?


 

▲Scratchではあまり見ない?RPG要素が強いゲームです!

 右は…どうやらヒットアンドブローをやっていますね。
 (正解は最後に書いておきます!)

「棒倒し法」とは?

では、ランダムに生成される迷路のアルゴリズムを知っていますか?

例えば…「棒倒し法」「穴掘り法」「壁伸ばし法」など色々あります。

この作品では「棒倒し法」を採用しました。

理由としましては…実装が楽だと思ったからです!

しかし棒倒し法は他のと比べると簡単な迷路ができやすいのが難点ですね…


①まず最初に迷路の枠を用意します。

 黒色➡ 灰色➡空間


②次に1マスの間隔で壁を置きます。

 黒色➡ 灰色➡空間 赤➡②で設置した壁


③赤の壁から壁を4方向にランダムに伸ばします。

 また、一番上にある赤の壁以外は上を除く3方向にしましょう。(死んだ空間を防ぐ為、)

 黒色➡ 灰色➡空間 赤➡②で設置した壁 緑➡③で設置した壁


④すると…あら!迷路ができました!


むむむ…簡単な迷路に見えますが、ゲームでは全体を見えないまま攻略するため、
難易度が上がるから大丈夫ですね!
あとはこの手順をScratchに再現するだけです!
また、これはScratch以外にも使えますので参考にしてくださいね。
ちなみにヒットアンドブローの正解は455でした


どうやって「宝箱」を設置しているの?

これは単純に「行き止まり」に設置しています。
どうやって「行き止まり」を検知しているかというと
強引かもしれませんが全マスを見て「周りに7マスあるか」を見て
そうだったら一定の確率で設置しています!


▲私が高い金を払って神様に宝箱を設置してもらっています!!!▲
(真っ赤な嘘)