📜  使用python的蛇游戏(1)

📅  最后修改于: 2023-12-03 14:49:50.824000             🧑  作者: Mango

使用Python的蛇游戏介绍

蛇游戏是一个经典的游戏,通过控制蛇的头部来不断获取食物,使得蛇身体变长,同时要避免蛇头碰到边界或身体,否则游戏结束。本文将介绍如何使用Python编写蛇游戏。

1. 蛇游戏的规则

蛇游戏的规则如下:

  • 开始时,蛇由一条长度为3的线段组成
  • 蛇头用红色表示,蛇身用绿色表示
  • 每次蛇头碰到食物,蛇的身体就会变长,食物位置会随机生成
  • 每次蛇头碰到边界或身体,游戏结束
2. 编写Python代码

我们将使用Python的pygame库来实现蛇游戏。首先,安装pygame库:

pip install pygame

接下来,我们来编写代码。具体的注释在代码中已经给出:

# 导入pygame库
import pygame
import random

# 初始化pygame
pygame.init()

# 定义窗口大小和标题
WINDOW_WIDTH = 600
WINDOW_HEIGHT = 600
WINDOW_TITLE = 'Snake Game'

# 定义颜色
WHITE_COLOR = (255, 255, 255)
RED_COLOR = (255, 0, 0)
GREEN_COLOR = (0, 255, 0)
BLACK_COLOR = (0, 0, 0)

# 定义小方格的大小
CELL_SIZE = 20

# 创建游戏窗口
game_window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption(WINDOW_TITLE)

# 定义游戏的速度
clock = pygame.time.Clock()
GAME_SPEED = 10

# 定义蛇的初始位置和长度
snake_head = [100, 100]
snake_body = [[100, 100], [80, 100], [60, 100]]

# 定义食物的初始位置
food_position = [400, 300]

# 定义方向
direction = 'RIGHT'

# 定义得分
score = 0

# 定义字体
font = pygame.font.SysFont(None, 40)

# 定义游戏循环
game_over = False
while not game_over:

    # 处理事件
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_over = True
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                direction = 'LEFT'
            elif event.key == pygame.K_RIGHT:
                direction = 'RIGHT'
            elif event.key == pygame.K_UP:
                direction = 'UP'
            elif event.key == pygame.K_DOWN:
                direction = 'DOWN'

    # 移动蛇的头部
    if direction == 'RIGHT':
        snake_head[0] += CELL_SIZE
    elif direction == 'LEFT':
        snake_head[0] -= CELL_SIZE
    elif direction == 'UP':
        snake_head[1] -= CELL_SIZE
    elif direction == 'DOWN':
        snake_head[1] += CELL_SIZE

    # 检查蛇头是否碰到边界
    if snake_head[0] < 0 or snake_head[0] >= WINDOW_WIDTH:
        game_over = True
    elif snake_head[1] < 0 or snake_head[1] >= WINDOW_HEIGHT:
        game_over = True

    # 检查蛇头是否碰到身体
    for body_part in snake_body[1:]:
        if snake_head == body_part:
            game_over = True

    # 检查蛇头是否碰到食物
    if snake_head == food_position:
        food_position = [random.randrange(0, WINDOW_WIDTH // CELL_SIZE) * CELL_SIZE,
                         random.randrange(0, WINDOW_HEIGHT // CELL_SIZE) * CELL_SIZE]
        score += 1
        snake_body.append([0, 0])

    # 移动蛇的身体
    for i in range(len(snake_body) - 1, 0, -1):
        snake_body[i][0] = snake_body[i - 1][0]
        snake_body[i][1] = snake_body[i - 1][1]
    snake_body[0][0] = snake_head[0]
    snake_body[0][1] = snake_head[1]

    # 绘制游戏界面
    game_window.fill(WHITE_COLOR)
    pygame.draw.rect(game_window, RED_COLOR, [food_position[0], food_position[1], CELL_SIZE, CELL_SIZE])
    for part in snake_body:
        pygame.draw.rect(game_window, GREEN_COLOR, [part[0], part[1], CELL_SIZE, CELL_SIZE])

    # 显示得分
    score_text = font.render('Score: {}'.format(score), True, BLACK_COLOR)
    game_window.blit(score_text, [10, 10])

    # 更新游戏界面
    pygame.display.update()

    # 控制游戏速度
    clock.tick(GAME_SPEED)

# 退出游戏
pygame.quit()
3. 运行游戏

保存代码为snake_game.py,然后在终端中运行:

python snake_game.py

游戏就会开始运行了。

4. 总结

通过本文,学习了如何使用Python和pygame库来实现蛇游戏。我们使用pygame库来创建游戏窗口、时间控制、绘制游戏界面等功能,然后通过编写Python代码来实现游戏的逻辑。游戏开发过程中需要注意处理各种可能出现的情况,例如蛇头碰到边界或身体,蛇头碰到食物等等。希望本文能够对Python游戏开发感兴趣的人有所帮助。