使用python随机生成9*9的迷宫
时间: 2024-10-18 22:17:54 浏览: 46
python 随机生成迷宫并使用DFS和BFS来找到迷宫路径
在Python中,我们可以使用`random`模块和一些基本的二维列表操作来创建一个简单的9x9迷宫。下面是一个简单的步骤说明:
1. 初始化迷宫:创建一个9x9的二维列表,初始所有元素都设为障碍(如0表示墙,1表示通道)。
```python
maze = [[1] * 9 for _ in range(9)]
```
2. 随机选择起点和终点:在迷宫中随机选取两个坐标作为起点和终点,可以使用`random.randint()`函数。
```python
start = (random.randint(0, 8), random.randint(0, 8))
end = (random.randint(0, 8), random.randint(0, 8))
while end == start:
end = (random.randint(0, 8), random.randint(0, 8))
# 将起点和终点改为通路
maze[start[0]][start[1]] = maze[end[0]][end[1]] = 0
```
3. 创建路径:从起点开始,使用深度优先搜索(DFS)或广度优先搜索(BFS)算法生成一条从起点到终点的路径,并将路径上经过的点改为通路。
```python
def dfs(maze, x, y, path=[]):
if x < 0 or y < 0 or x >= len(maze) or y >= len(maze[0]) or maze[x][y] == 0 or (x, y) in path:
return
path.append((x, y))
maze[x][y] = 0 # 将当前位置标记为已通过
dfs(maze, x + 1, y) # 向右
dfs(maze, x - 1, y) # 向左
dfs(maze, x, y + 1) # 向下
dfs(maze, x, y - 1) # 向上
dfs(maze, start[0], start[1])
```
4. 打印迷宫:最后,打印出迷宫,显示通道(0)和墙壁(1)。
```python
for row in maze:
print(' '.join(['X' if cell == 1 else 'S' if (cell, i) in [start, end] else str(cell) for i, cell in enumerate(row)]))
```
阅读全文