Pygame 贪吃蛇游戏教程:从入门到进阶

本教程将带你一步步使用 Pygame 编写一个简单的贪吃蛇游戏,涵盖基本的游戏逻辑、图形绘制和事件处理等内容。

代码示例

import pygame
import random

# 初始化 Pygame
pygame.init()

# 设置窗口大小
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('贪吃蛇游戏')

# 定义颜色
white = (255, 255, 255)
green = (0, 255, 0)
red = (255, 0, 0)

# 定义贪吃蛇参数
snake_block_size = 20
snake_speed = 10

# 定义贪吃蛇移动方向
direction = 'right'

# 定义贪吃蛇初始位置和长度
snake_x = screen_width // 2
snake_y = screen_height // 2
snake_body = []
snake_length = 1

# 定义食物初始位置
food_x = round(random.randrange(0, screen_width - snake_block_size) / 20) * 20
food_y = round(random.randrange(0, screen_height - snake_block_size) / 20) * 20

# 游戏主循环
running = True
clock = pygame.time.Clock()

def draw_snake(snake_block_size, snake_body):
    for x in snake_body:
        pygame.draw.rect(screen, green, [x[0], x[1], snake_block_size, snake_block_size])

while running:
    # 处理游戏事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT and direction != 'right':
                direction = 'left'
            elif event.key == pygame.K_RIGHT and direction != 'left':
                direction = 'right'
            elif event.key == pygame.K_UP and direction != 'down':
                direction = 'up'
            elif event.key == pygame.K_DOWN and direction != 'up':
                direction = 'down'

    # 移动贪吃蛇的位置
    if direction == 'left':
        snake_x -= snake_block_size
    elif direction == 'right':
        snake_x += snake_block_size
    elif direction == 'up':
        snake_y -= snake_block_size
    elif direction == 'down':
        snake_y += snake_block_size

    # 贪吃蛇吃到食物
    if snake_x == food_x and snake_y == food_y:
        food_x = round(random.randrange(0, screen_width - snake_block_size) / 20) * 20
        food_y = round(random.randrange(0, screen_height - snake_block_size) / 20) * 20
        snake_length += 1

    # 填充背景色
    screen.fill(white)

    # 绘制食物
    pygame.draw.rect(screen, red, [food_x, food_y, snake_block_size, snake_block_size])

    # 绘制贪吃蛇
    snake_head = []
    snake_head.append(snake_x)
    snake_head.append(snake_y)
    snake_body.append(snake_head)
    if len(snake_body) > snake_length:
        del snake_body[0]

    for x in snake_body[:-1]:
        if x == snake_head:
            running = False

    draw_snake(snake_block_size, snake_body)

    # 更新屏幕显示
    pygame.display.update()

    # 设置游戏帧率
    clock.tick(snake_speed)

# 退出游戏
pygame.quit()

游戏说明

  1. 贪吃蛇会在窗口中自动移动。
  2. 使用键盘的方向键控制贪吃蛇的移动方向。
  3. 目标是吃到食物并尽量避免碰到自己的身体。
  4. 贪吃蛇碰到自己的身体时游戏结束。

代码解释

  1. 初始化 Pygamepygame.init() 初始化 Pygame 库。
  2. 设置窗口大小screen = pygame.display.set_mode((screen_width, screen_height)) 设置游戏窗口大小。
  3. 定义颜色white = (255, 255, 255) 定义 RGB 颜色值。
  4. 定义贪吃蛇参数snake_block_size = 20 设置贪吃蛇块的大小。
  5. 定义贪吃蛇移动方向direction = 'right' 设置初始移动方向。
  6. 定义贪吃蛇初始位置和长度snake_x = screen_width // 2 设置初始横坐标。
  7. 定义食物初始位置food_x = round(random.randrange(0, screen_width - snake_block_size) / 20) * 20 设置食物随机位置。
  8. 游戏主循环while running: 循环处理游戏事件和逻辑。
  9. 处理游戏事件for event in pygame.event.get(): 处理键盘事件,控制贪吃蛇移动方向。
  10. 移动贪吃蛇的位置:根据 direction 更新贪吃蛇的坐标。
  11. 贪吃蛇吃到食物:如果贪吃蛇坐标与食物坐标相同,则食物随机生成新的位置,贪吃蛇长度加 1。
  12. 填充背景色screen.fill(white) 填充窗口背景色。
  13. 绘制食物pygame.draw.rect(screen, red, [food_x, food_y, snake_block_size, snake_block_size]) 绘制食物。
  14. 绘制贪吃蛇draw_snake(snake_block_size, snake_body) 绘制贪吃蛇,并检查是否碰撞自身。
  15. 更新屏幕显示pygame.display.update() 更新屏幕显示。
  16. 设置游戏帧率clock.tick(snake_speed) 设置游戏帧率。

扩展功能

你可以根据自己的需要对游戏进行修改和扩展,比如:

  • 增加难度:增加食物移动速度、缩短贪吃蛇移动速度、增加障碍物等。
  • 计分:统计得分并显示在屏幕上。
  • 音效:添加背景音乐和音效。

希望这个例子能帮助你开始编写一个复杂一点的 Pygame 游戏!如果你有任何问题,欢迎在评论区提问。

Pygame 贪吃蛇游戏教程:从入门到进阶

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

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