使用python随机生成一个9x9的迷宫,并绘制走出该迷宫的路径
时间: 2024-10-09 14:04:28 浏览: 61
在Python中,我们可以使用`numpy`库创建一个9x9的二维数组作为迷宫,然后利用深度优先搜索(DFS)或广度优先搜索(BFS)算法找到一条从起点到终点的路径。最后,可以使用`matplotlib`库来可视化迷宫和路径。这里是一个简单的示例:
```python
import numpy as np
from collections import deque
import matplotlib.pyplot as plt
# 创建一个9x9的迷宫,1表示墙壁,0表示空地
maze = np.array([[1] * 8 + [0], # 墙壁边界
[0, 0, 0, 1, 0, 0, 0], # 开始位置
[1, 0, 1, 0, 1, 0, 1], # 随机填充墙壁
[0, 1, 0, 1, 0, 1, 0], # 结束位置
...]) # 可以添加更多行
# 设置起点和终点
start = (1, 2) # 起点坐标
end = (6, 7) # 终点坐标
def create_maze():
maze.flat[::2] = 1 # 再次填充随机的墙壁
return maze
def draw_maze(maze, start, end):
plt.imshow(maze, cmap='gray', interpolation='nearest')
plt.xticks(np.arange(9), range(1, 10))
plt.yticks(np.arange(9), range(1, 10))
plt.plot(*zip(start, end), 'r-o', markersize=10)
plt.show()
def shortest_path(maze, start, end):
queue = deque([start])
visited = set()
while queue:
x, y = queue.popleft()
if (x, y) == end:
break
for dx, dy in [(0, -1), (0, 1), (-1, 0), (1, 0)]: # 四邻域
nx, ny = x + dx, y + dy
if 0 <= nx < 9 and 0 <= ny < 9 and maze[nx][ny] == 0 and (nx, ny) not in visited:
visited.add((nx, ny))
queue.append((nx, ny))
return list(visited)
maze = create_maze()
draw_maze(maze, start, end)
path = shortest_path(maze, start, end)
print("Path:", path)
阅读全文