1. 游戏简介与玩法规则
-
• 玩家在迷宫中寻找出口
-
• 控制角色上下左右移动
-
• 不能穿墙,走到终点则游戏胜利
依赖安装:
pip install pygame
2. 面向对象架构设计
-
•
Player
: 玩家控制对象 -
•
Wall
: 迷宫墙体模块 -
•
MazeGame
: 主游戏管理类,包含地图、逻辑、渲染
3. 玩家类 Player
class Player:
def__init__(self, x, y, size):
self.rect = pygame.Rect(x, y, size, size)
self.color = (0, 255, 0)
self.speed = size
defmove(self, dx, dy, walls):
next_rect = self.rect.move(dx, dy)
ifnotany(next_rect.colliderect(w.rect) for w in walls):
self.rect = next_rect
defdraw(self, screen):
pygame.draw.rect(screen, self.color, self.rect)
4. 墙体类 Wall
class Wall:
def __init__(self, x, y, size):
self.rect = pygame.Rect(x, y, size, size)
self.color = (100, 100, 100)
def draw(self, screen):
pygame.draw.rect(screen, self.color, self.rect)
5. 游戏类 MazeGame
class MazeGame:
def__init__(self):
pygame.init()
self.tile_size = 40
self.map_data = [
"1111111",
"1S00001",
"1011101",
"1000101",
"1110101",
"100000E",
"1111111"
]
self.width = len(self.map_data[0]) * self.tile_size
self.height = len(self.map_data) * self.tile_size
self.screen = pygame.display.set_mode((self.width, self.height))
pygame.display.set_caption("迷宫小游戏")
self.clock = pygame.time.Clock()
self.player = None
self.walls = []
self.end_rect = None
self.running = True
self.parse_map()
6. 解析地图与绘制
def parse_map(self):
for y, row in enumerate(self.map_data):
for x, cell in enumerate(row):
pos = (x * self.tile_size, y * self.tile_size)
if cell == "1":
self.walls.append(Wall(*pos, self.tile_size))
elif cell == "S":
self.player = Player(*pos, self.tile_size)
elif cell == "E":
self.end_rect = pygame.Rect(*pos, self.tile_size, self.tile_size)
7. 控制与碰撞检测
def run(self):
whileself.running:
self.clock.tick(10)
for event in pygame.event.get():
if event.type == pygame.QUIT:
self.running = False
keys = pygame.key.get_pressed()
dx = dy = 0
if keys[pygame.K_LEFT]: dx = -self.tile_size
if keys[pygame.K_RIGHT]: dx = self.tile_size
if keys[pygame.K_UP]: dy = -self.tile_size
if keys[pygame.K_DOWN]: dy = self.tile_size
if dx != 0or dy != 0:
self.player.move(dx, dy, self.walls)
ifself.player.rect.colliderect(self.end_rect):
print("🎉 恭喜通关!")
self.running = False
self.draw()
defdraw(self):
self.screen.fill((0, 0, 0))
for wall inself.walls:
wall.draw(self.screen)
self.player.draw(self.screen)
pygame.draw.rect(self.screen, (255, 255, 0), self.end_rect)
pygame.display.update()
8. 拓展建议与总结
🎮 可添加:
-
• 计时系统
-
• 多关卡地图
-
• 自动迷宫生成算法
-
• 迷宫随机物品收集
✅ 本项目帮助你掌握:
-
• 类组织复杂对象
-
• 碰撞检测逻辑
-
• 地图与玩家交互实现
走出迷宫,开启你的 Python 游戏之旅!🧱🚀