本文概述
Python是最流行的编程语言, 或者可以肯定地说它是下一代编程语言。在计算机科学的每个新兴领域, Python都积极参与其中。 Python在各种领域都有庞大的库, 例如机器学习(Numpy, Pandas, Matplotlib), 人工智能(Pytorch, TensorFlow)和游戏开发(Pygame, Pyglet)。
在本教程中, 我们将学习使用Pygame(Python库)进行游戏开发的知识。
Pygame
Pygame是一组跨平台的Python模块, 用于创建视频游戏。
它由旨在与Python编程语言一起使用的计算机图形和声音库组成。
Pygame由Pete Shinners正式编写, 以取代PySDL。
Pygame适合于创建客户端应用程序, 这些应用程序可以包装在独立的可执行文件中。
Pygame的先决条件:
在学习pygame之前, 我们需要了解我们要开发哪种游戏。
要学习pygame, 必须具有Python的基本知识。
Pygame安装
在Windows中安装pygame
在安装Pygame之前, 应先在系统中安装Python, 最好安装3.6.1或更高版本, 因为它对初学者更友好, 并且运行速度更快。主要有两种安装Pygame的方法, 如下所示:
1.通过pip安装:安装Pygame的好方法是使用pip工具(这是python用于安装软件包的工具)。命令如下:
py -m pip install -U pygame --user
2.通过IDE安装:第二种方法是通过IDE安装, 这里我们使用Pycharm IDE。在pycharm中安装pygame很简单。我们可以通过在终端中运行以上命令来安装它, 或使用以下步骤:
打开文件选项卡, 然后单击设置选项。
选择项目解释器, 然后单击+图标。
它将显示搜索框。搜索pygame并单击安装包按钮。
要检查pygame是否已正确安装, 请在IDLE解释器中键入以下命令, 然后按Enter:
import pygame
如果该命令成功运行且未引发任何错误, 则表明我们已经成功安装了Pygame, 并找到了用于pygame编程的正确IDLE版本。
在Mac中安装pygame
按照以下步骤在Mac中安装pygame
访问pygame pygame.org的官方网站, 它将显示以下窗口, 下载pygame-1.9.1release-python.org-32bit-py2.7-macosx10.3.dmg:
注意:如果你使用的是其他版本的Python, 请下载最后一个链接。
双击下载的文件并解压缩。现在, 双击显示为运行安装程序的解压缩的mpkg文件。按照说明安装pygame。
启动终端(Cmd + Space, 然后在搜索框中输入” terminal”)。在终端中, 键入” python2.7″, 然后按Enter。
Python应该启动, 将版本显示为2.7.2(也可以使用2.7.1), 并提示你。在Python提示符下, 输入” import pygame”。如果你没有任何错误, 则一切正常。
简单的pygame示例
这是pygame的简单程序, 给出了语法的基本概念。
import pygame
pygame.init()
screen = pygame.display.set_mode((400, 500))
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
pygame.display.flip()
输出
成功执行后, 它将显示以下窗口作为输出:
让我们逐行了解上述程序的基本语法:
import pygame-可以访问pygame框架并导入pygame的所有功能。
pygame.init()-用于初始化pygame的所有必需模块。
pygame.display.set_mode((width, height))-用于显示所需大小的窗口。返回值是一个Surface对象, 这是我们将在其中执行图形操作的对象。
pygame.event.get()-用于清空事件队列。如果我们不这样做, 则窗口消息将开始堆积, 并且游戏将变得对操作系统无响应。
pygame.QUIT-当我们单击窗口角处的关闭按钮时, 它用于终止事件。
pygame.display.flip()-Pygame是双缓冲的, 因此会移动缓冲区。调用此功能对于使你在游戏屏幕上所做的任何更新都可见是很重要的。
pygame表面
pygame Surface用于显示任何图像。 Surface具有预定义的分辨率和像素格式。默认情况下, 表面颜色为黑色。通过传递size参数定义其大小。
表面可以具有许多额外的属性, 例如Alpha平面, 颜色键, 源矩形剪切等。否则, 他们将使用高度增强的软件发短信方法。
pygame时钟
在pygame中, 时间以毫秒(1/1000秒)表示。 Pygame时钟用于跟踪时间。时间对于创建动作, 播放声音或对任何事件做出反应至关重要。通常, 我们不会以秒为单位计算时间。我们以毫秒为单位。时钟还提供各种功能来帮助控制游戏的帧频。几个功能如下:
蜱()
此功能用于更新时钟。语法如下:
tick(framerate=0)
每帧应调用一次此方法。它将计算自上次调用以来经过了多少毫秒。 framerate参数是传递给函数的可选参数, 如果将其作为参数传递, 则该函数将延迟以使游戏的运行速度低于给定的每秒滴答声。
tick_busy_loop()
tick_busy_loop()与tick()相同。通过每帧调用一次Clock.tick_busy_loop(20), 该程序将永远不会以超过每秒20帧的速度运行。语法如下:
tick_busy_loop()
get_time()
get_time()用于获取上一个刻度。在Clock.tick()的最后两个调用之间传递的isdra的毫秒数。
get_time()
Pygame Blit
pygame blit是将游戏对象渲染到表面上的过程, 此过程称为blitting。创建游戏对象时, 需要渲染它。如果我们不渲染游戏对象并运行程序, 则它将提供黑色窗口作为输出。
盲打是任何游戏中最慢的操作之一, 因此, 我们需要注意不要在每一帧中都在屏幕上过分刺眼。 blitting中使用的主要功能是blit(), 它是:
闪光灯()
blit(source, dest, area=None, special_flags=0)
此功能用于将一个图像绘制到另一个图像中。可以使用dest参数放置平局。 des