”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > Pygame开发游戏实用指南---Pygame简介

Pygame开发游戏实用指南---Pygame简介

发布于2024-08-31
浏览:372

在本文中,我们将学习如何下载和安装游戏开发库 Pygame,并且我们将运行一个简单的示例项目来熟悉 Pygame。

项目代码下载链接:https://github.com/la-vie-est-belle/pygame_codes


安装 Pygame

在 Windows 上安装 Pygame
打开命令行窗口并键入命令 pip install pygame,然后按 Enter。如果最后看到Successfully Install pygame的提示,说明Pygame已经安装成功。
The Practical Guide to Game Development with Pygame---Introduction to Pygame

注意:本教程使用的Pygame版本是2.6.0。

当然,我们还需要验证Pygame是否正常工作。打开命令行窗口,输入python,按回车键,进入Python命令行界面。然后输入 import pygame.如果出现Pygame欢迎信息,则说明安装成功,Pygame可以正常使用。
The Practical Guide to Game Development with Pygame---Introduction to Pygame

在 MacOS 上安装 Pygame
同样,打开终端,输入 pip3 install pygame,然后按 Enter 键安装 Pygame。验证方法同上,这里不再赘述。


运行 Pygame 示例项目

打开命令行窗口,运行命令 python -m pygame.examples.aliens 即可启动 Pygame 自带的内置外星人游戏。控件如下:

  • 方向键移动玩家
  • 空格键射击 The Practical Guide to Game Development with Pygame---Introduction to Pygame

The Practical Guide to Game Development with Pygame---Introduction to Pygame

在接下来的实践文章中,我们将一起开发并实现这款外星人游戏。现在,让我们看一下这个简单的 Pygame 示例代码 1-1。

import sys
import pygame

pygame.init()                                       # 1
screen = pygame.display.set_mode((1100, 600))       # 2
pygame.display.set_caption('Dino Runner')           # 3

icon = pygame.image.load('icon.png')                # 4
pygame.display.set_icon(icon)

dino = pygame.image.load('dino_start.png')          # 5
dino_rect = dino.get_rect()
dino_rect.topleft = (80, 300)

while True:                                         # 6
    for event in pygame.event.get():                # 7
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill((255, 255, 255))                    # 8
    screen.blit(dino, dino_rect)                    # 9
    pygame.display.flip()                           # 10

结果如下:
The Practical Guide to Game Development with Pygame---Introduction to Pygame

代码解释:
#1 pygame.init() 初始化 Pygame 库中的所有模块。在使用任何 Pygame 函数或类之前必须包含此行。

#2 调用 pygame.display.set_mode() 函数设置游戏窗口的大小(大小作为元组传递)。该函数返回一个窗口对象,该对象存储在变量 screen 中。该对象允许您在窗口中绘制图形、添加图像和文本。 pygame.display模块专门用于窗口管理和屏幕显示。

#3 使用 pygame.display.set_caption() 函数设置窗口标题。

#4 使用 pygame.image.load() 函数加载图像,在本例中为窗口图标。该函数返回一个图像对象,该对象存储在 icon 变量中。接下来,使用pygame.display.set_icon()函数设置窗口图标。

#5 加载主要人物图像,调用get_rect()获取人物图像的矩形区域(一个Rect对象),并将该矩形的左上角topleft设置为屏幕位置。

注:屏幕坐标原点为左上角,X轴向右延伸,Y轴向下延伸。 Pygame中的坐标系将在后面章节详细讲解

#6 进入游戏循环,Pygame 将持续检测和处理用户输入、更新游戏状态或更新屏幕内容。

#7 使用 pygame.event.get() 获取事件队列。在 for 循环中,我们读取并处理每个事件。如果事件类型 event.type 为 pygame.QUIT (即关闭窗口),则调用 pygame.quit() 退出游戏。 sys.exit() 终止当前Python程序,清理并退出运行Pygame程序的线程。

#8 调用窗口对象screen的fill()函数,给窗口填充一种颜色。您传递一个表示颜色 RGB 值的元组,在本例中为白色。

#9 调用窗口对象screen的blit()函数将字符图像显示在屏幕上,位置由之前设置的矩形dino_rect定义。还可以向 blit() 传递一个坐标元组 (x, y) 来设置角色在屏幕上的位置,如:

screen.blit(dino, (80, 300))

#10 调用pygame.display.flip()函数刷新屏幕内容。您还可以使用 pygame.display.update() 来达到相同的效果。后者还可以接受矩形区域来仅更新屏幕的该部分。例如,以下行将仅更新左上角位于 (0, 0) 且宽度和高度为 350 像素的矩形。

pygame.display.update((0, 0, 350, 350))

The Practical Guide to Game Development with Pygame---Introduction to Pygame


概括

在本文中,我们学习了如何在 Windows 和 MacOS 上安装 Pygame,并探索了一个简单的示例代码来了解 Pygame 的基本结构、运行原理和一些常用功能。如果还有不完全理解的部分,可以暂时先不说。后面的章节可能有助于阐明这些概念。

如果您喜欢本教程,请请作者喝杯咖啡。 :)

  • The Practical Guide to Game Development with Pygame---Introduction to Pygame

  • The Practical Guide to Game Development with Pygame---Introduction to Pygame

  • The Practical Guide to Game Development with Pygame---Introduction to Pygame

版本声明 本文转载于:https://dev.to/code_egg/the-practical-guide-to-game-development-with-pygame-introduction-to-pygame-2b3k?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • 如何解决 MySQL C# 中的文本编码问题?
    如何解决 MySQL C# 中的文本编码问题?
    修复 MySQL C# 中的文本编码问题使用实体框架在 C# 中处理 MySQL 数据库时,用户可能会遇到文本编码问题,特别是带有特殊字符,例如“ë”,渲染不正确。本文探讨了解决此常见问题的最合适的解决方案。要纠正编码问题,必须执行以下操作:验证排序规则设置: 确保所涉及的数据库或表的排序规则与 U...
    编程 发布于2024-11-06
  • 如何将美丽搜索与 Node.js 集成
    如何将美丽搜索与 Node.js 集成
    作为 Node.js 开发人员,构建能够提供快速且准确的搜索结果的应用程序非常重要。用户期望立即得到相关的响应,但实现起来可能具有挑战性,特别是在处理大型数据集时。 这就是美丽搜索的用武之地——一个为轻松满足这些需求而构建的搜索引擎。 什么是美丽搜索? Meilisearch 是一个...
    编程 发布于2024-11-06
  • 并行 JavaScript 机
    并行 JavaScript 机
    作者:Vladas Saulis,PE Prodata,克莱佩达,立陶宛 2024 年 5 月 18 日 抽象的 本文提出了一种新的编程模型,可以以简单且自动平衡的方式利用多核 CPU 系统。该模型还提出了一种更简单的编程范例,用于在大多数大规模并行计算领域(例如天气预报、核物理、搜索引擎等)开发并...
    编程 发布于2024-11-06
  • 推荐项目:人事管理系统数据库设置
    推荐项目:人事管理系统数据库设置
    LabEx 的这个综合项目提供了深入研究数据库管理世界的宝贵机会,重点是人事管理系统的创建和实施。无论您是新手数据库管理员还是经验丰富的开发人员,这种实践经验都将为您提供必要的技能,以便在关系数据库环境中有效管理和操作数据。 深入了解数据库基础知识 该项目首先引导您完成使用 sudo...
    编程 发布于2024-11-06
  • Python 中实例方法和类方法有什么区别?
    Python 中实例方法和类方法有什么区别?
    类与实例方法Python 的 PEP 8 风格指南建议使用“self”作为实例方法的第一个参数,使用“cls”作为类方法的第一个参数。理解这两类方法之间的区别对于有效的面向对象编程至关重要。实例方法实例方法与类的特定实例相关联。它们对实例的数据进行操作,并且通常接收“self”作为它们的第一个参数。...
    编程 发布于2024-11-06
  • 将 AdoptiumJDK 源代码加载到 Eclipse IDE 中
    将 AdoptiumJDK 源代码加载到 Eclipse IDE 中
    AdoptiumJDK 的安装程序中没有内置源代码文件,如果您需要通过 Eclipse IDE 检查如何使用任何本机 JDK 方法,这是不可能的。 按照以下步骤在Eclipse IDE中加载源代码: 访问 AdoptiumJDK 官方网站并按所需的 JDK 版本进行过滤,在我的例子中是 11.0.2...
    编程 发布于2024-11-06
  • 绝对定位与相对定位:为什么它们的行为如此不同?
    绝对定位与相对定位:为什么它们的行为如此不同?
    了解绝对位置与相对位置:宽度、高度等处理网页上的元素定位时,了解这些概念绝对位置与相对位置的区别至关重要。让我们深入探讨经常引起疑问的四个关键点:1。相对宽度与绝对宽度为什么相对定位的div自动占据100%宽度,而绝对定位的div只占据内容宽度?原因是设置位置:absolute 从文档结构的正常流程...
    编程 发布于2024-11-06
  • Python、Node js 和 PHP 中用于验证码识别的顶级模块
    Python、Node js 和 PHP 中用于验证码识别的顶级模块
    在我们的自动化时代,大多数解决方案都可以免费找到,我现在不是在谈论解决数学问题,而是稍微复杂的任务,例如数据解析,和我们的例子一样,还有 recapcha 识别。但如何找到一个好的模块呢?毕竟,随着技术的发展,每个人都得到了它,无论是认真的开发人员还是彻头彻尾的骗子。 我分析了验证码识别模块的市场,...
    编程 发布于2024-11-06
  • 以下是一些标题选项,重点关注问题格式和核心内容:

**选项 1(直接且简洁):**

* **如何在 PHP 中高效地循环多维数组?**

**选项2
    以下是一些标题选项,重点关注问题格式和核心内容: **选项 1(直接且简洁):** * **如何在 PHP 中高效地循环多维数组?** **选项2
    在 PHP 中循环多维数组多维数组可能是解析的一个挑战,特别是在处理不同深度级别和非顺序索引时。考虑一个保存事件信息的数组,其中可以包含多个艺术家及其相应的链接,如下所示:array(2) { [1]=> array(3) { ["eventID"]...
    编程 发布于2024-11-06
  • 通过 Linting 提高代码质量
    通过 Linting 提高代码质量
    Whenever I start a new project, one of the first things I do is put in place a code linter. For the uninitiated, linters analyze your project and call...
    编程 发布于2024-11-06
  • 如何有效地执行JavaScript中的回调函数?
    如何有效地执行JavaScript中的回调函数?
    理解 JavaScript 中回调函数的本质在 JavaScript 中,回调函数提供了一种方便的机制,可以在另一个函数完成后执行一个函数它的执行。虽然概念很简单,但回调的最佳实现有时可能不清楚。让我们探讨一个简化的示例:var myCallBackExample = { myFirstFu...
    编程 发布于2024-11-06
  • Vue 框架简介
    Vue 框架简介
    What is Vue? from the Vue website Vue is a "progressive" JavaScript framework for building user interfaces. It works by build...
    编程 发布于2024-11-06
  • 逃离戏剧:为什么 HydePHP 是您的 WordPress 替代品
    逃离戏剧:为什么 HydePHP 是您的 WordPress 替代品
    WordPress 戏剧 随着 WordPress 生态系统面临前所未有的混乱,许多开发人员和网站所有者正在重新考虑他们的平台选择。最近 WordPress 联合创始人 Matt Mullenweg 和 WP Engine 之间的冲突凸显了 WordPress 社区内的控制、贡献和...
    编程 发布于2024-11-06
  • Go 中的并发模式;工作池和扇出/扇入
    Go 中的并发模式;工作池和扇出/扇入
    Go 以其卓越的并发模型而闻名,但许多开发人员只关注 goroutine 和通道。然而,工作池和扇出/扇入等并发模式提供了真正的效率。 本文将介绍这些高级概念,帮助您最大限度地提高 Go 应用程序的吞吐量。 为什么并发很重要 并发允许程序高效地执行任务,特别是在处理 I/O 操作、...
    编程 发布于2024-11-06
  • 如何在 C++ 中将单个字符转换为 std::string?
    如何在 C++ 中将单个字符转换为 std::string?
    从单个字符创建字符串人们可能会遇到需要将表示为 char 数据类型的单个字符转换为std::string。从字符串中获取字符很简单,只需在所需位置索引字符串即可。然而,相反的过程需要不同的方法。要从单个字符创建 std::string,可以使用多种方法:使用 std::string参数计数为 1:c...
    编程 发布于2024-11-06

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3