本以为Prime迷宫生成算法和图论的Prime算法有什么关联,貌似并没有。
Prime迷宫生成算法的原理:
(1)初始地图所有位置均设为墙
(2)任意插入一个墙体进墙队列
(3)判断此时墙体是否可以设置为路(判断依据在于上下左右四个位置是否只有一个位置是路)
(4)若设置为路,则将该位置周围(上下左右)的所有墙插入队列,接着执行(5);若无法设置为路,直接执行(5)
(5)从墙队列中删去当前位置所在节点
(6)若墙队列不为空,则从队列中随机选取一面墙重新执行(3),直到墙队列为空
看代码,非常简单:
static const int L = 44;
void CreateMaze() {
int Maze[L][L] = { 0 };
//最外围设置为路,可以有效的保护里面一层墙体,并防止挖出界
for (int i = 0; i < L; i++) {
Maze[i][0] = 1;
Maze[0][i] = 1;
Maze[L - 1][i] = 1;
Maze[i][L - 1] =