迷宫是许多游戏都会出现的经典场景,那么,如何用代码生成一个随机的迷宫呢?
本次我们用Scratch实现迷宫随机生成,基于prime算法,生成一个没有封闭空间,处处连通的迷宫。
具体的思路是这样的:
- 生成一个网状的结构,空白的地方用0表示,存在墙的地方用1表示,如图所示:
- 随机选一个空白格,将其上下左右的墙加入到【被访问的墙列表】,同时将该空白格加入【已访问的空白格列表】
- 重复执行以下步骤直到【被访问的墙列表】为空:
1)在【被访问的墙列表】随机选择一项,记为A
2)如果这面墙两边的空白格中有一个空白格还没有被加入【已访问的空白格列表】,那么打通这面墙(即将1改写为0),然后将这个还没有被加入【已访问的空白格列表】的空白格加入【已访问的空白格列表】,并将其上下左右的墙加入到【被访问的墙列表】
3)从【被访问的墙列表】中删除A
此时,所有空白格都被加入【已访问的空白格列表】,并且生成一个处处连通,没有封闭空间的随机迷宫:
程序实现如下: