Python贪吃蛇游戏:附完整代码及注释
使用Python编写经典贪吃蛇游戏
想学习如何用Python创建游戏吗?那就从经典的贪吃蛇开始吧!本教程将带你逐步构建一个功能齐全的贪吃蛇游戏,并提供完整代码和详细注释。
1. 设置环境
首先,确保你的电脑上安装了Python和Pygame库。如果没有,可以通过以下命令安装:bashpip install pygame
2. 代码实现pythonimport pygameimport random
初始化Pygamepygame.init()
设置窗口大小和标题WINDOW_WIDTH = 640WINDOW_HEIGHT = 480window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))pygame.display.set_caption('贪吃蛇')
定义颜色BLACK = (0, 0, 0)GREEN = (0, 255, 0)RED = (255, 0, 0)
贪吃蛇类class Snake: def init(self): # 初始化蛇的位置和方向 self.body = [(WINDOW_WIDTH/2, WINDOW_HEIGHT/2)] self.direction = 'right'
def move(self): # 根据方向移动蛇 x, y = self.body[0] if self.direction == 'up': y -= BLOCK_SIZE elif self.direction == 'down': y += BLOCK_SIZE elif self.direction == 'left': x -= BLOCK_SIZE elif self.direction == 'right': x += BLOCK_SIZE
# 更新蛇的位置,移除尾部并添加头部 self.body.insert(0, (x, y)) self.body.pop()
def change_direction(self, new_direction): # 改变蛇的方向,防止反向移动 if new_direction == 'up' and self.direction != 'down': self.direction = new_direction elif new_direction == 'down' and self.direction != 'up': self.direction = new_direction elif new_direction == 'left' and self.direction != 'right': self.direction = new_direction elif new_direction == 'right' and self.direction != 'left': self.direction = new_direction
def eat_food(self, food_pos): # 检查蛇是否吃到食物 if self.body[0] == food_pos: self.body.append((-BLOCK_SIZE, -BLOCK_SIZE)) # 在尾部添加一个方块 return True return False
def check_collision(self): # 检查蛇是否碰撞边界或自身 x, y = self.body[0] if x < 0 or x >= WINDOW_WIDTH or y < 0 or y >= WINDOW_HEIGHT: return True for block in self.body[1:]: if block == self.body[0]: return True return False
def draw(self, surface): # 绘制蛇 for block in self.body: pygame.draw.rect(surface, GREEN, (block[0], block[1], BLOCK_SIZE, BLOCK_SIZE))
食物类class Food: def init(self): # 随机生成食物位置 self.position = (0, 0) self.spawn()
def spawn(self): # 随机生成食物位置 x = random.randint(0, (WINDOW_WIDTH - BLOCK_SIZE) // BLOCK_SIZE) * BLOCK_SIZE y = random.randint(0, (WINDOW_HEIGHT - BLOCK_SIZE) // BLOCK_SIZE) * BLOCK_SIZE self.position = (x, y)
def draw(self, surface): # 绘制食物 pygame.draw.rect(surface, RED, (self.position[0], self.position[1], BLOCK_SIZE, BLOCK_SIZE))
游戏主函数def main(): # 设置游戏速度 clock = pygame.time.Clock() FPS = 10
# 创建蛇和食物对象 snake = Snake() food = Food()
# 游戏循环 running = True while running: # 处理事件 for event in pygame.event.get(): if event.type == pygame.QUIT: running = False elif event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: snake.change_direction('up') elif event.key == pygame.K_DOWN: snake.change_direction('down') elif event.key == pygame.K_LEFT: snake.change_direction('left') elif event.key == pygame.K_RIGHT: snake.change_direction('right')
# 更新游戏状态 snake.move() if snake.eat_food(food.position): food.spawn() if snake.check_collision(): running = False
# 绘制游戏画面 window.fill(BLACK) snake.draw(window) food.draw(window) pygame.display.update()
# 控制游戏速度 clock.tick(FPS)
# 退出游戏 pygame.quit()
程序入口if name == 'main': main()
3. 代码解释
- 导入库: 导入
pygame库用于游戏开发,导入random库用于随机生成食物位置。* 初始化Pygame: 初始化pygame库。* 设置窗口: 创建游戏窗口并设置标题。* 定义颜色: 定义游戏中使用的颜色。* 蛇类: 定义蛇类,包含移动、改变方向、吃食物、检查碰撞等方法。* 食物类: 定义食物类,包含随机生成食物位置和绘制食物的方法。* 主函数: 游戏的主循环,处理事件、更新游戏状态和绘制游戏画面。
4. 运行游戏
将代码保存为.py文件,例如snake_game.py,然后在终端中运行:bashpython snake_game.py
现在你可以使用方向键控制贪吃蛇,享受游戏乐趣了!
原文地址: https://www.cveoy.top/t/topic/b29k 著作权归作者所有。请勿转载和采集!