用Python实现的简单迷宫游戏
发布时间:2023-12-04 10:34:10
下面是一个用Python实现的简单迷宫游戏的示例代码:
import random
# 迷宫的大小
WIDTH = 10
HEIGHT = 10
# 迷宫的墙和路径的符号
WALL = '#'
PATH = ' '
# 迷宫游戏的类
class MazeGame:
def __init__(self):
self.maze = [[WALL] * (WIDTH * 2 + 1) for _ in range(HEIGHT * 2 + 1)]
self.visited = [[False] * WIDTH for _ in range(HEIGHT)]
self.generate_maze(0, 0)
self.place_exit()
def generate_maze(self, x, y):
self.visited[y][x] = True
directions = [(1, 0), (0, 1), (-1, 0), (0, -1)]
random.shuffle(directions)
for dx, dy in directions:
nx, ny = x + dx, y + dy
if nx < 0 or ny < 0 or nx >= WIDTH or ny >= HEIGHT:
continue
if self.visited[ny][nx]:
continue
self.maze[y*2+1+dy][x*2+1+dx] = PATH
self.maze[y*2+1+2*dy][x*2+1+2*dx] = PATH
self.generate_maze(nx, ny)
def place_exit(self):
exit_x = random.randint(0, WIDTH-1)
self.maze[HEIGHT*2][exit_x*2+1] = PATH
def __str__(self):
return '
'.join([''.join(row) for row in self.maze])
# 使用例子
game = MazeGame()
print(game)
这个游戏使用递归的方式生成迷宫,首先初始化一个二维列表maze,其中元素都是墙的符号#。然后使用递归函数generate_maze来生成迷宫,这个函数从起点开始,随机选择一个方向并前进两步,标记墙和路径的位置。同时,使用二维列表visited来记录已经访问过的位置。最后,在最底部随机放置一个出口。游戏的界面是通过将二维列表转换为字符串进行展示。
使用例子中首先创建一个迷宫游戏对象game,然后打印它的字符串表示形式,就可以看到生成的迷宫。
