- 代码
- 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_poswhile 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等图形界面库,用于创建游戏界面和处理用户输入。