使用python随机生成一个9x9的迷宫,并用小红点绘制出走出该迷宫的路径
时间: 2024-10-20 10:11:25 浏览: 13
在Python中,你可以使用`numpy`库创建一个9x9的二维数组来模拟迷宫,然后用`random`库随机填充墙壁(障碍)和通道(空地)。接下来,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)算法来找到迷宫出口并标记路径。这里我会简述如何实现这个过程:
首先安装必要的库,如果还没安装:
```bash
pip install numpy matplotlib
```
然后编写一个简单的迷宫生成和路径追踪函数示例:
```python
import numpy as np
import random
import matplotlib.pyplot as plt
# 创建一个9x9的迷宫网格
maze = np.zeros((9, 9), dtype=int)
# 随机选择一些位置作为墙壁
walls = [(i, j) for i in range(9) for j in range(9)]
random.shuffle(walls)
for wall in walls[:int(0.8 * len(walls))]:
maze[wall] = 1
# 指定一个起点和终点
start = (0, 0)
end = (8, 8)
def find_path(maze, start, end):
# 这里使用DFS算法(简化版,可能不会找到最短路径)
stack = [start]
visited = set()
while stack:
x, y = stack.pop()
if (x, y) == end:
break
visited.add((x, y))
for dx, dy in [(1, 0), (-1, 0), (0, 1), (0, -1)]:
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:
stack.append((nx, ny))
maze[nx][ny] = 2 # 标记路径上已走过的节点
find_path(maze, start, end)
# 绘制迷宫和路径
plt.imshow(maze, cmap='gray', interpolation='nearest')
plt.scatter(start[::-1], color='red') # 小红点表示起点
plt.scatter(end[::-1], color='green') # 小绿点表示终点
plt.plot(*np.where(maze == 2), 'r-', linewidth=1) # 绘制路径
plt.xticks([]), plt.yticks([])
plt.show()
阅读全文