用Python随机生成9×9的迷宫并绘制走出迷宫的路径
时间: 2024-10-09 13:04:40 浏览: 81
在Python中,我们可以使用`random`模块和一些基本的数据结构如列表来创建一个简单的二维迷宫,并利用深度优先搜索(DFS)或广度优先搜索(BFS)算法找出走出迷宫的路径。以下是一个简单的示例:
首先,我们需要创建一个9x9的迷宫矩阵,其中0表示可以通过的空地,1表示墙壁:
```python
import random
def create_maze(size=9):
maze = [[0] * size for _ in range(size)]
walls = [(i, j) for i in range(1, size - 1) for j in range(1, size - 1)]
while walls:
wall = random.choice(walls)
maze[wall[0]][wall[1]] = 1
walls.remove((wall[0] - 1, wall[1])) # 上
walls.remove((wall[0] + 1, wall[1])) # 下
walls.remove((wall[0], wall[1] - 1)) # 左
walls.remove((wall[0], wall[1] + 1)) # 右
return maze
```
接下来,我们可以使用DFS来寻找走出迷宫的路径。这里假设起始位置为`(0, 0)`,结束位置为`(size-1, size-1)`:
```python
def dfs(maze, start, end, path=[]):
path = path + [start]
if start == end:
print(" -> ".join(str(p) for p in path))
elif maze[start[0]][start[1]] == 1:
return
else:
maze[start[0]][start[1]] = 1 # 标记已走过
for direction in [(0, 1), (0, -1), (1, 0), (-1, 0)]: # 上下左右
next_step = (start[0] + direction[0], start[1] + direction[1])
if 0 <= next_step[0] < len(maze) and 0 <= next_step[1] < len(maze[0]) and maze[next_step[0]][next_step[1]] == 0:
dfs(maze, next_step, end, path)
maze[start[0]][start[1]] = 0 # 撤销标记以便回溯
# 使用迷宫生成函数并进行DFS
maze = create_maze()
dfs(maze, (0, 0), (len(maze)-1, len(maze)-1))
```
这将随机生成一个迷宫,并打印出从起点到终点的路径。注意,这个例子并未实际画出迷宫图形,如果你需要可视化迷宫,可以考虑使用第三方库如`pygame`。
阅读全文