使用Python编写经典贪吃蛇游戏

想学习如何使用Python编写游戏吗?本教程将带你一步步创建一个经典的贪吃蛇游戏。我们将使用Pygame库来处理图形界面和用户输入。

1. 安装Pygame

首先,确保你已经安装了Pygame库。如果没有,可以使用pip安装:

pip install pygame

2. Python代码

以下是完整的贪吃蛇游戏代码:

import pygame
import random

# 初始化游戏
pygame.init()

# 定义游戏窗口大小和标题
width, height = 640, 480
window = pygame.display.set_mode((width, height))
pygame.display.set_caption('贪吃蛇游戏')

# 定义颜色
black = pygame.Color(0, 0, 0)
green = pygame.Color(0, 255, 0)
red = pygame.Color(255, 0, 0)

# 定义蛇的初始位置和大小
snake_position = [[100, 50], [90, 50], [80, 50]]
snake_size = pygame.Surface((10, 10))

# 定义食物的初始位置
food_position = [random.randrange(1, (width // 10)) * 10,
                 random.randrange(1, (height // 10)) * 10]
food_size = pygame.Surface((10, 10))

# 初始化方向
direction = 'RIGHT'
change_to = direction

# 定义游戏时钟
clock = pygame.time.Clock()

# 定义分数
score = 0

# 定义游戏结束标志
game_over = False

# 游戏循环
while not game_over:
    # 监听事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                change_to = 'RIGHT'
            elif event.key == pygame.K_LEFT:
                change_to = 'LEFT'
            elif event.key == pygame.K_UP:
                change_to = 'UP'
            elif event.key == pygame.K_DOWN:
                change_to = 'DOWN'
    
    # 确定新的方向
    if change_to == 'RIGHT' and direction != 'LEFT':
        direction = 'RIGHT'
    elif change_to == 'LEFT' and direction != 'RIGHT':
        direction = 'LEFT'
    elif change_to == 'UP' and direction != 'DOWN':
        direction = 'UP'
    elif change_to == 'DOWN' and direction != 'UP':
        direction = 'DOWN'
    
    # 更新蛇的位置
    if direction == 'RIGHT':
        snake_position[0][0] += 10
    elif direction == 'LEFT':
        snake_position[0][0] -= 10
    elif direction == 'UP':
        snake_position[0][1] -= 10
    elif direction == 'DOWN':
        snake_position[0][1] += 10
    
    # 绘制游戏界面
    window.fill(black)
    
    for pos in snake_position:
        pygame.draw.rect(window, green, pygame.Rect(pos[0], pos[1], 10, 10))
    
    pygame.draw.rect(window, red, pygame.Rect(food_position[0], food_position[1], 10, 10))
    
    # 判断蛇是否吃到食物
    if snake_position[0][0] == food_position[0] and snake_position[0][1] == food_position[1]:
        score += 1
        food_position = [random.randrange(1, (width // 10)) * 10,
                         random.randrange(1, (height // 10)) * 10]
    else:
        snake_position.pop()
        
    # 判断蛇是否碰到自己或墙壁
    if snake_position[0][0] < 0 or snake_position[0][0] > width-10\
            or snake_position[0][1] < 0 or snake_position[0][1] > height-10:
        game_over = True
        break
    for block in snake_position[1:]:
        if snake_position[0][0] == block[0] and snake_position[0][1] == block[1]:
            game_over = True
            break
    
    # 更新显示
    pygame.display.update()
    
    # 控制游戏速度
    clock.tick(20)

# 结束游戏
pygame.quit()

3. 代码解释

这段代码首先初始化Pygame,设置游戏窗口和颜色。然后,定义蛇和食物的初始位置和大小。游戏循环中,程序监听键盘事件来控制蛇的方向,并根据蛇的新位置更新游戏状态。如果蛇吃到食物,则增长并生成新的食物。如果蛇碰到边界或自身,则游戏结束。

4. 运行游戏

将代码保存为.py文件,例如snake_game.py,然后在终端中运行:

python snake_game.py

现在你就可以玩经典的贪吃蛇游戏了!

5. 扩展

你可以尝试修改代码来添加更多功能,例如:

  • 增加游戏难度
  • 显示分数
  • 添加音效
  • 设计不同的关卡
Python贪吃蛇游戏代码示例 - 从零开始编写经典游戏

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

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