下面是一个使用 Python 编写的简单贪吃蛇游戏的示例代码,你可以直接运行它并体验游戏:

import pygame
import time
import random

ppygame.init()

# 游戏窗口的宽度和高度
width = 600
height = 400

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

# 初始化游戏窗口
game_display = pygame.display.set_mode((width, height))
ppygame.display.set_caption('贪吃蛇游戏')

clock = pygame.time.Clock()

snake_size = 10
snake_speed = 15

font_style = pygame.font.SysFont(None, 30)
score_font = pygame.font.SysFont(None, 50)


def our_snake(snake_size, snake_list):
    for x in snake_list:
        pygame.draw.rect(game_display, green, [x[0], x[1], snake_size, snake_size])


def message(msg, color):
    mesg = font_style.render(msg, True, color)
    game_display.blit(mesg, [width / 6, height / 3])


def game_loop():
    game_over = False
    game_close = False

    # 蛇的初始位置
    x1 = width / 2
    y1 = height / 2

    # 蛇在x和y轴上的移动速度
    x1_change = 0
    y1_change = 0

    # 蛇的长度
    snake_list = []
    length_of_snake = 1

    # 随机生成食物的位置
    foodx = round(random.randrange(0, width - snake_size) / 10.0) * 10.0
    foody = round(random.randrange(0, height - snake_size) / 10.0) * 10.0

    while not game_over:

        while game_close:
            game_display.fill(black)
            message('游戏结束!按Q-退出,按C-重新开始', red)
            pygame.display.update()

            for event in pygame.event.get():
                if event.type == pygame.KEYDOWN:
                    if event.key == pygame.K_q:
                        game_over = True
                        game_close = False
                    if event.key == pygame.K_c:
                        game_loop()

        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:
                    x1_change = -snake_size
                    y1_change = 0
                elif event.key == pygame.K_RIGHT:
                    x1_change = snake_size
                    y1_change = 0
                elif event.key == pygame.K_UP:
                    y1_change = -snake_size
                    x1_change = 0
                elif event.key == pygame.K_DOWN:
                    y1_change = snake_size
                    x1_change = 0

        if x1 >= width or x1 < 0 or y1 >= height or y1 < 0:
            game_close = True
        x1 += x1_change
        y1 += y1_change
        game_display.fill(black)
        pygame.draw.rect(game_display, blue, [foodx, foody, snake_size, snake_size])
        snake_head = []
        snake_head.append(x1)
        snake_head.append(y1)
        snake_list.append(snake_head)
        if len(snake_list) > length_of_snake:
            del snake_list[0]

        for x in snake_list[:-1]:
            if x == snake_head:
                game_close = True

        our_snake(snake_size, snake_list)
        pygame.display.update()

        if x1 == foodx and y1 == foody:
            foodx = round(random.randrange(0, width - snake_size) / 10.0) * 10.0
            foody = round(random.randrange(0, height - snake_size) / 10.0) * 10.0
            length_of_snake += 1

        clock.tick(snake_speed)

    pygame.quit()
    quit()


game_loop()

这段代码使用 pygame 库实现了一个简单的贪吃蛇游戏。游戏窗口的大小为 600x400 像素,游戏中的蛇由绿色方块表示,食物为蓝色方块。玩家通过方向键控制蛇的移动方向,当蛇吃到食物时,蛇的长度增加,游戏得分增加。如果蛇碰到边界或自己的身体,则游戏结束。玩家可以按 Q 键退出游戏,按 C 键重新开始游戏。

代码解析:

1. 导入库

首先导入 pygame 库,用于游戏开发;time 库,用于控制游戏速度;random 库,用于随机生成食物的位置。

2. 初始化游戏窗口

设置游戏窗口的尺寸为 600x400 像素,并设置窗口标题为“贪吃蛇游戏”。

3. 定义颜色

定义游戏中的颜色,包括白色、黑色、红色、绿色和蓝色,用于绘制不同的元素。

4. 初始化游戏时钟

使用 pygame.time.Clock 初始化一个时钟,用于控制游戏帧率。

5. 设置蛇的大小和速度

设置蛇的大小为 snake_size,速度为 snake_speed

6. 设置字体

定义两种字体:一种用于显示游戏信息,另一种用于显示得分。

7. our_snake() 函数

该函数用于绘制蛇。它接收蛇的大小和蛇的身体坐标列表作为参数,并在游戏窗口中绘制每个蛇身方块。

8. message() 函数

该函数用于在游戏窗口中显示文本信息。它接收文本内容和颜色作为参数,并在窗口中绘制文本。

9. game_loop() 函数

该函数是游戏的主循环函数,负责处理游戏逻辑和事件。

10. 游戏循环

游戏循环包含两个循环:

  • 外层循环用于处理游戏是否结束。
  • 内层循环用于处理游戏结束后的操作,例如显示游戏结束信息、重新开始游戏等。

在游戏循环中,程序会不断检测玩家操作、更新蛇的位置、绘制游戏元素、判断游戏是否结束等。

11. 事件处理

程序会不断检测玩家的操作,例如按键事件、鼠标事件等。

12. 蛇的移动

玩家通过方向键控制蛇的移动方向,程序会根据按键事件更新蛇的坐标,并判断蛇是否碰到边界。

13. 食物生成

程序会随机生成食物的位置,并判断蛇是否吃到食物。如果蛇吃到食物,则蛇的长度增加,并生成新的食物。

14. 绘制游戏元素

程序会将蛇、食物、游戏信息等元素绘制到游戏窗口中。

15. 更新游戏状态

程序会根据游戏逻辑更新游戏状态,例如游戏得分、蛇的长度等。

16. 控制游戏速度

程序会使用 clock.tick(snake_speed) 控制游戏的帧率,从而控制游戏的速度。

17. 游戏结束

如果蛇碰到边界或自己的身体,则游戏结束。程序会显示游戏结束信息,并等待玩家操作。

18. 退出游戏

玩家可以通过按 Q 键退出游戏。

19. 重新开始游戏

玩家可以通过按 C 键重新开始游戏。

总结:

这段代码展示了如何使用 pygame 库编写一个简单的贪吃蛇游戏。通过学习这段代码,你可以了解游戏开发的基本流程,并尝试开发自己的游戏。


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

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