欢迎访问宙启技术站
智能推送

用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,然后打印它的字符串表示形式,就可以看到生成的迷宫。