Python小游戏6——迷宫探险

  • 代码
  • python

    import random

    # 定义迷宫的大小和墙壁字符
    maze_size = (5, 5)
    wall_char = '#'
    path_char = ' '
    start_char = 'S'
    end_char = 'E'

    # 生成随机迷宫(这里使用简单的随机生成方式,可以进一步优化为真正的迷宫生成算法)
    def generate_maze():
        maze = [['#' if (x == 0 or y == 0 or x == maze_size[0] - 1 or y == maze_size[1] - 1) else path_char for x in range(maze_size[0])] for y in range(maze_size[1])]
        
        # 随机放置起点和终点(确保不在边界上)
        start_x, start_y = random.randint(1, maze_size[0] - 2), random.randint(1, maze_size[1] - 2)
        end_x, end_y = random.randint(1, maze_size[0] - 2), random.randint(1, maze_size[1] - 2)
        
        # 确保起点和终点不重合
        while (start_x, start_y) == (end_x, end_y):
            end_x, end_y = random.randint(1, maze_size[0] - 2), random.randint(1, maze_size[1] - 2)
        
        maze[start_x][start_y] = start_char
        maze[end_x][end_y] = end_char
        
        # 随机填充一些墙壁(这里只是简单随机填充,可以进一步优化)
        for _ in range((maze_size[0] - 2) * (maze_size[1] - 2) // 3):  # 大约填充1/3的墙壁
            x, y = random.randint(1, maze_size[0] - 2), random.randint(1, maze_size[1] - 2)
            if maze[x][y] == path_char:
                maze[x][y] = wall_char
        
        return maze, (start_x, start_y), (end_x, end_y)

    # 打印迷宫
    def print_maze(maze, player_pos):
        for row in maze:
            for col in row:
                if (player_pos[0], player_pos[1]) == (maze.index(row), row.index(col)):
                    print('P', end=' ')  # 用'P'表示玩家位置
                else:
                    print(col, end=' ')
            print()

    # 玩家移动指令
    def move_player(maze, player_pos, direction):
        x, y = player_pos
        if direction == 'w' and maze[x - 1][y] != wall_char:
            return (x - 1, y)
        elif direction == 's' and maze[x + 1][y] != wall_char:
            return (x + 1, y)
        elif direction == 'a' and maze[x][y - 1] != wall_char:
            return (x, y - 1)
        elif direction == 'd' and maze[x][y + 1] != wall_char:
            return (x, y + 1)
        else:
            return player_pos  # 无法移动时保持原位

    # 游戏主循环
    def main():
        maze, start_pos, end_pos = generate_maze()
        player_pos = start_pos

        while player_pos != end_pos:
            print_maze(maze, player_pos)
            move = input("输入移动指令(w=上,s=下,a=左,d=右): ").strip().lower()
            player_pos = move_player(maze, player_pos, move)

        print_maze(maze, player_pos)
        print("恭喜你,找到了出口!")

    # 开始游戏
    if __name__ == "__main__":
        main()

  • 游戏说明

生成迷宫:`generate_maze` 函数会生成一个随机的迷宫,其中起点用 `'S'` 表示,终点用 `'E'` 表示,墙壁用 `'#'` 表示,路径用空格 `' '` 表示。

打印迷宫:`print_maze` 函数会打印当前迷宫的状态,并用 `'P'` 表示玩家的位置。

玩家移动:`move_player` 函数会根据玩家输入的指令(`w`=上,`s`=下,`a`=左,`d`=右)来移动玩家。如果移动方向上有墙壁,则玩家保持原位。

游戏主循环:`main` 函数是游戏的主循环,它会不断打印迷宫并等

  • 知识点总结

    数据类型与结构:
    可迭代类型:如列表(list)、元组(tuple)、字符串(string)、集合(set)、字典(dictionary)以及range对象,这些类型在循环遍历中非常有用。
    循环语句:for循环和while循环,用于控制游戏的运行和角色的移动。
    条件判断:if语句和else语句,用于处理游戏中的不同情况,如碰撞检测、到达终点等。
    函数与模块:
    函数定义与调用:用于封装游戏逻辑,如角色移动、碰撞检测等。
    模块导入与使用:如pygame等图形界面库,用于创建游戏界面和处理用户输入。

猜你喜欢

转载自blog.csdn.net/cxh666888_/article/details/142993718