当前位置: 首页 > 科技观察

使用Python和Pygame模块构建游戏框架

时间:2023-03-21 18:58:33 科技观察

本系列的第一篇文章通过创建一个简单的骰子游戏来探索Python。现在是时候从头开始制作您自己的游戏了。在本系列的第一篇文章中,我展示了如何使用Python创建一个简单的基于文本的骰子游戏。这一次,我将展示如何使用Python模块Pygame来创建图形游戏。需要几篇文章才能获得一款真正能创造出某些东西的游戏,但到本系列结束时,您将更好地理解如何查找和学习新的Python模块以及如何从它们构建应用程序。在开始之前,您必须安装Pygame。安装新的Python模块有多种方法可以安装Python模块,但最常见的两种是:使用来自您的发行版软件存储库的Python包管理器pip。每个都有自己的一套优势。如果您在Linux或BSD上进行开发,则可以利用您的发行版的软件存储库来及时自动更新它们。但是,使用Python的内置包管理器可以让您控制何时更新模块。此外,它不是特定于操作系统的,这意味着即使您不在常用的开发机器上也可以使用它。pip的另一个优点是它允许在本地安装模块,如果您在所使用的计算机上没有管理权限,这将非常有用。使用pip如果你的系统同时安装了Python和Python3,那么你要使用的命令很可能是pip3,它是用来区分pip命令和Python2.x的。如果您不确定,请先尝试pip3。pip命令的工作方式有点像大多数Linux包管理器。您可以使用search搜索Python模块并使用install安装它们。如果您在用于安装软件的计算机上没有管理权限,则可以使用--user选项将模块仅安装到您的主目录。$pip3searchpygame[...]Pygame(1.9.3)-Python游戏开发ge-pygame(1.5)-Python的二维游戏引擎pygame_camera(0.1.1)-PyGame的相机库pygame_cffi(0.2.1)-一个基于cffi的SDL包装器,它复制了pygameAPI。[...]$pip3installPygame--userPygame是一个Python模块,这意味着它只是一组可以在Python程序中使用的库。换句话说,它不是像IDLE或Ninja-IDE那样可以启动的程序。Pygame入门视频游戏需要一个场景:故事发生的地方。在Python中,有两种不同的方法来创建您的故事背景:设置背景颜色设置背景图像您的背景只是图像或颜色。你的视频游戏角色无法与背景中的事物互动,所以不要把太重要的东西放在后面。只是摆设装饰而已。设置您的Pygame脚本要开始一个新的Pygame项目,首先要在您的计算机上创建一个文件夹。游戏的所有文件都放在这个目录下。将运行游戏所需的所有文件保存在项目文件夹中非常重要。Python脚本以文件类型、您的姓名和您要使用的许可证开头。使用开源许可证,以便您的朋友可以改进您的游戏并与您分享他们的更改:#!/usr/bin/envpython3#bySethKenlon##GPLv3#该程序是免费软件:您可以重新分发它和/或#根据自由软件基金会发布的#GNU通用公共许可证的条款修改它,#许可证的第3版,或(根据您的选择)任何更新版本。##分发此程序是希望它能有用,但#WITHOUTANYWARRANTY;甚至没有#适销性或特定用途适用性的默示保证。有关详细信息,请参阅GNU#通用公共许可证。##你应该已经收到一份GNU通用公共许可证#以及这个程序。如果没有,请参阅。然后,您告诉Python您想要使用哪些模块。有些模块是常见的Python库,当然你想包含一个刚刚安装的Pygame模块。importpygame#加载pygame关键字importsys#告诉python使用你的文件系统importos#帮助python识别你的操作系统因为你会用这个脚本文件做很多事情,所以把文件分成几段是很有帮助的,这样你就可以知道把代码放在哪里。您可以使用块注释来执行此操作,这些注释仅在查看源代码时可见。在您的代码中创建三个块。'''Objects'''#在这里放置Python类和函数'''Setup'''#在这里放置一次性运行代码'''MainLoop'''#在这里放置游戏的循环代码指令接下来,设置窗口适合您游戏的大小。请注意,并非每个人的电脑屏幕都很大,因此最好使用适合大多数人电脑的屏幕尺寸。这是一种切换全屏模式的方法,许多现代视频游戏都这样做,但由于您才刚刚开始,所以很容易只设置一个尺寸。'''设置'''worldx=960worldy=720在脚本中使用Pygame引擎之前,您需要进行一些基本设置。您必须设置帧速率,启动其内部时钟,然后启动(初始化)Pygame。fps=40#帧率ani=4#动画循环clock=pygame.time.Clock()pygame.init()现在你可以设置背景了。设置背景在您继续之前,打开一个图形应用程序并为您的游戏世界创建一个背景。在项目目录的图像文件夹中将其另存为stage.png。这里有一些您可以使用的免费图形应用程序。Krita是一款专业级的绘图素材模拟器,可以用来创作精美的图画。如果您对创建视频游戏艺术非常感兴趣,您甚至可以购买一系列游戏艺术教程。Pinta是一款简单易学的基本绘图应用程序。Inkscape是一个矢量图形应用程序。用它来绘制形状、线条、样条曲线和贝塞尔曲线。您的图像不必很复杂,您可以稍后返回并更改它。完成后,将此代码添加到文件的设置部分:world=pygame.display.set_mode([worldx,worldy])backdrop=pygame.image.load(os.path.join('images','stage.png').convert())backdropbox=world.get_rect()如果你只想用一种颜色填充你的游戏背景,你需要做的就是:world=pygame.display.set_mode([worldx,worldy])您还必须定义要使用的颜色。在您的设置部分,使用红色、绿色和蓝色(RGB)值创建一些颜色定义。'''Setup'''BLUE=(25,25,200)BLACK=(23,23,23)WHITE=(254,254,254)此时,理论上你可以开始游戏了。问题是,它可能只持续一毫秒。为了证明这一点,将文件保存为your-name_game.py(将your-name替换为您的真实姓名)。然后开始你的游戏。如果您使用的是IDLE,请从“运行”菜单中选择“运行模块”来运行您的游戏。如果您使用的是Ninja,请单击左侧按钮栏中的“运行文件”按钮。您还可以直接从Unix终端或Windows命令提示符运行Python脚本。$python3./your-name_game.py如果您使用的是Windows,请使用此命令:py.exeyour-name_game.py来启动它,但不要期望太多,因为您的游戏现在只持续几毫秒。您可以在下一节中修复它。循环除非另有说明,否则Python脚本运行一次且仅运行一次。现在的计算机速度非常快,因此您的Python脚本将在不到一秒的时间内运行。要强制您的游戏打开并激活足够长的时间以供人们看到(更不用说玩了),请使用while循环。要打开游戏存档,您可以将变量设置为某个值,然后告诉while循环在变量保持不变的情况下继续保存循环。这通常被称为“主循环”,您可以使用术语main来表示您的变量。在Setup部分的任意位置添加代码:main=True在主循环期间,使用Pygame关键字检查键盘上的某个键是否已被按下或释放。将此代码添加到您的主循环中:'''Mainloop'''whilemain==True:foreventinpygame.event.get():ifevent.type==pygame.QUIT:pygame.quit();sys.exit()main=Falseifevent.type==pygame.KEYDOWN:ifevent.key==ord('q'):pygame.quit()sys.exit()main=False也在你的循环中,刷新你的世界背景。如果您使用图像作为背景:world.blit(backdrop,backdropbox)如果您使用颜色作为背景:world.fill(BLUE)***,告诉Pygame刷新屏幕上的所有内容并提前游戏的内部时钟.pygame.display.flip()clock.tick(fps)保存你的文件,再次运行它,看看你创造过的最无聊的游戏。要退出游戏,请按键盘上的q键。