使用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

现在你可以使用方向键控制贪吃蛇,享受游戏乐趣了!

Python贪吃蛇游戏:附完整代码及注释

原文地址: https://www.cveoy.top/t/topic/b29k 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录