使用 PyGame 在 Python 中制作贪吃蛇游戏

2025年3月17日 | 阅读 14 分钟

在以下教程中,我们将了解如何使用 Python 编程语言中的 PyGame 库构建一个贪吃蛇游戏

但在我们开始之前,让我们简要了解一下贪吃蛇游戏是什么。

贪吃蛇游戏简介

贪吃蛇是一款于 20 世纪 70 年代末在街机上发明的视频游戏。1998 年,它成为 诺基亚 手机上的典型预装游戏。玩家的主要目标是控制一条细长的生物,看起来像一条蛇,它在一个有边界的平面上漫游,在不撞墙或撞到自己的情况下捕获最大数量的食物。玩家可以控制蛇头的方向(上、下、左或右),蛇身随之移动。每次蛇吃到一块食物,它的尾巴就会变长,增加游戏的难度。

学习制作视频游戏是件有趣而愉快的学习经历。在学习 Python 或 PyGame 库时,制作贪吃蛇游戏可能具有挑战性。贪吃蛇游戏是每个新手程序员都应该接受挑战的初学者友好项目之一。

现在让我们简要讨论一下 Python 的 PyGame

了解 PyGame 库

PyGame 库是一组跨平台的 Python 模块,用于开发视频游戏。PyGame 主要由计算机图形和声音库组成,旨在与 Python 编程语言一起使用。Pete Shinners 正式编写此库以取代 PySDL。它适用于开发客户端应用程序,这些应用程序可以潜在地封装在独立的 executables 中。

如何安装 PyGame 库?

可以通过在命令提示符或终端中键入以下命令来使用 PIP 安装程序安装 PyGame 库。

语法

安装完成后,我们可以通过创建一个新的 python 程序文件并导入 pygame 模块来验证 pygame 库是否已正确安装。

以下是说明相同内容的代码片段。

文件:verify.py

现在,让我们保存文件并在命令提示符或终端中运行以下命令。

语法

如果程序没有返回任何导入错误,则表示库已成功安装。如果出现任何异常,请尝试重新安装库并考虑查看其官方文档。

项目先决条件

现在我们已经成功安装了所需的库,让我们简要了解一下项目的先决条件。以下是我们项目所需的模块

  1. PyGame: 此模块将允许我们开发游戏。
  2. Random: 此模块将允许我们生成随机数,打印列表或字符串的随机值等。
  3. Time: 此模块将允许我们处理时间。

使用 PyGame 开发贪吃蛇游戏

一旦我们确定了项目的先决条件,我们将开始游戏的开发阶段。我们将 Python 中贪吃蛇游戏的开发过程分为以下几个步骤

步骤 1: 首先,我们将导入所需的模块。

步骤 2: 其次,我们将定义应用程序的必要变量

步骤 3: 然后,我们将为应用程序初始化 pygame

步骤 4: 然后,我们将初始化游戏对象的大小和位置。

步骤 5: 然后,我们将定义游戏正常运行所需的函数。

步骤 6: 最后,我们将定义主函数或游戏循环来运行应用程序。

现在我们将详细了解以上步骤。

导入所需模块

我们将从导入游戏开发所需的模块开始。我们将导入 pygame 模块以及 timerandom 模块。

让我们考虑以下演示相同内容的代码片段。

文件:snake.py

说明

在上面的代码片段中,我们导入了 pygame 模块来开发游戏。然后,我们导入了 time 模块来操作时间。最后,我们导入了 random 模块来在游戏中随机生成对象。

定义游戏所需的必要变量

现在我们将定义游戏所需的一些变量。这些变量包括蛇的速度、屏幕的宽度和高度,以及我们将在应用程序中使用的一些颜色。

让我们考虑以下说明相同内容的代码片段。

文件:snake.py

说明

在上面的代码片段中,我们定义了一个包含蛇速度的变量。然后,我们定义了窗口的宽度和高度。最后,我们使用 pygame 模块的 Color() 类定义了一些颜色,如白色、黑色、红色、绿色和蓝色。

初始化应用程序的 pygame

现在我们将使用 init() 函数初始化 pygame,并使用 pygame.display 模块创建主窗口以显示游戏的运行情况。我们还将使用 pygame.time 模块设置游戏的帧率。

让我们考虑以下代码片段来理解其实现。

文件:snake.py

说明

在上面的代码片段中,我们使用 init() 函数初始化 pygame 窗口。然后,我们使用 pygame.display 模块的 set_mode() 函数设置屏幕大小。接着,我们使用 pygame.display 模块的 set_caption() 函数设置应用程序的标题。最后,我们创建了一个 pygame.time 模块的 Clock() 类的对象,以设置游戏的刷新率。

初始化游戏对象的大小和位置

现在我们将向游戏中添加对象并设置它们的大小和位置。这些对象包括蛇和水果。我们将从设置蛇的默认位置和大小开始。我们还将设置水果的位置,并将其生成标志设置为 True。我们还将设置蛇头的默认方向。

让我们考虑以下说明相同内容的代码片段。

文件:snake.py

说明

在上面的代码片段中,我们定义了蛇的默认位置。然后,我们定义了蛇身的前四个方块。接着,我们定义了水果的位置并将 spawning_of_fruit 变量设置为 True。我们还将蛇的初始方向设置为向 RIGHT

定义游戏的必要函数

现在我们已经涵盖了游戏的初始要求,是时候定义一些必要的函数了。我们将定义一个函数来显示玩家的分数,以及一个函数来结束游戏。现在我们将详细了解这些函数的实现。

显示玩家分数的函数

我们定义的第一个函数将允许我们显示玩家的分数。

让我们考虑以下说明相同内容的代码片段。

文件:snake.py

说明

在上面的代码片段中,我们定义了一个变量来存储分数的初始值,即 0。然后,我们定义了一个名为 display_score() 的函数,它接受多个参数,如选定的文本、字体颜色、样式和大小。在此函数中,我们创建了一个字体对象。然后,我们使用 render() 函数创建了一个背景表面,每当分数更新时,我们都会更改它。然后,我们创建了一个用于放置文本的矩形对象。最后,我们使用 blit() 函数在主屏幕上显示分数。

结束游戏的函数

我们定义的第二个函数将显示最终分数,并在蛇撞墙或撞到自己后退出应用程序。

让我们考虑以下说明相同内容的代码片段。

文件:snake.py

说明

在上面的代码片段中,我们定义了一个名为 game_over() 的函数。在此函数中,我们创建了一个字体对象来显示分数。我们还创建了文本表面来渲染分数。然后,我们将文本位置设置在可玩区域的中间,并使用 blit() 函数在主屏幕上显示最终分数。然后,我们使用 flip() 函数通过更新表面来更新分数。最后,我们使用 time 模块的 sleep() 函数暂停当前线程的执行 2 秒,并调用 quit() 函数关闭应用程序。

创建游戏循环以运行应用程序

现在我们已经满足了开发游戏的所有要求,是时候创建主函数或游戏循环来运行应用程序了。这个循环将渲染我们创建的所有内容并相应地实现这两个函数。

让我们考虑以下代码片段,它说明了游戏循环的实现。

文件:snake.py

说明

在上面的代码片段中,我们将 game_run 标志值设置为 True,并使用 while 循环来运行游戏。在此循环中,我们遍历事件列表,检查玩家是否请求退出应用程序并执行相同操作,然后将标志值设置为 False。我们还验证了按键是否负责蛇的移动,并创建了特殊条件,即不允许蛇瞬间向相反方向移动。然后,我们检查了蛇与水果之间的碰撞,并将分数增加了 1,设置新的水果生成。然后,我们检查了蛇是否撞墙,并为此调用了 game_over() 函数。我们还检查了蛇是否撞到自己,并再次调用了 game_over() 函数。然后,我们借助 display_score() 函数显示了分数。然后,我们使用 update() 函数刷新游戏屏幕,并将游戏的刷新率设置为蛇的速度。最后,我们在 while 循环之外调用了 quit() 函数。

我们现在已经成功地实现了贪吃蛇游戏的S代码。我们现在可以保存文件并在命令 shell 或终端中使用以下命令运行应用程序。

语法

但在我们进入输出部分之前;让我们简要看看“使用 PyGame 的贪吃蛇游戏”的完整项目代码。

完整的项目代码

现在我们将看到“使用 PyGame 在 Python 中制作贪吃蛇游戏”项目的完整代码片段。

文件:snake.py

输出

图 1:使用 PyGame 的贪吃蛇游戏输出

Snake Game using PyGame in Python

图 2:贪吃蛇游戏的运行

Snake Game using PyGame in Python

图 3:游戏结束

Snake Game using PyGame in Python