传入长和宽,生成一个迷宫
时间: 2023-06-25 07:01:42 浏览: 38
好的,我可以为您提供一个简单的迷宫生成算法,下面是 Python 代码:
```python
import random
def generate_maze(width, height):
# 创建一个全部为墙的二维数组
maze = [[1] * width for _ in range(height)]
# 随机选择一个起点
start_x = random.randint(0, width - 1)
start_y = random.randint(0, height - 1)
maze[start_y][start_x] = 0
# 按照深度优先搜索的原则,递归地打通迷宫中的墙
dfs(maze, start_x, start_y)
# 将起点和终点设为入口和出口
maze[start_y][start_x] = 2
end_x = random.randint(0, width - 1)
end_y = random.randint(0, height - 1)
maze[end_y][end_x] = 3
return maze
def dfs(maze, x, y):
directions = [(0, -1), (0, 1), (-1, 0), (1, 0)]
random.shuffle(directions)
for dx, dy in directions:
nx, ny = x + dx, y + dy
if 0 <= nx < len(maze[0]) and 0 <= ny < len(maze) and maze[ny][nx] == 1:
maze[ny][nx] = 0
dfs(maze, nx, ny)
# 测试代码
maze = generate_maze(10, 10)
for row in maze:
print(row)
```
这个算法使用深度优先搜索的原则,从一个随机起点开始,递归地打通迷宫中的墙,直到所有的空间都能够连通。最后再随机选择一个终点,并将起点和终点设为入口和出口。其中,0 表示空格,1 表示墙,2 表示入口,3 表示出口。