本章,你将创建第一个 Pygame 应用程序。对于环境的配置,详见上一章。
导航
新建文件
新建一个文件,命名为first_app.py
。
导入模块
在新建的文件中添加如下代码:
import sys
import pygame
上述代码将导入 pygame 和 sys 模块,以便使用这些库中的函数。
初始化 Pygame
pygame.init()
以上的代码将初始化 Pygame 模块。
设置窗口
SCREEN = pygame.display.set_mode((1200, 800))
pygame.display.set_caption('First Application')
以上的代码,使用了 pygame.display
模块。这是一个很常用的模块,它用于控制显示屏幕及窗口,可以参照官方文档对此模块的解释。
pygame.display.set_mode
函数将初始化窗口,第一个参数需要传入一个元组,表示窗口的大小,其他参数,本章暂时不会用到,请参见官方文档的解释。
pygame.display.set_caption
函数传入一个字符串,表示窗口的标题。
注意:请确保pygame.display.set_mode
函数传入的是一个元组,而不是两个数,也就是不要漏了括号。
事件循环
事件循环,是 Pygame 以及大多数游戏框架中很重要的概念之一。在这个机制下,程序捕捉到的事件(event),诸如点击鼠标、按下键盘按键等,将依次添加到事件队列(event queue)中。
在 Pygame 中,游戏以循环的方式进行,每次循环,通常进行事件处理以及屏幕绘制。
本章中,游戏循环的代码如下:
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
首先,由while True
开始了游戏循环。
接下来,使用了pygame.event
模块中的get
函数。pygame.event
模块用于与事件及事件队列进行交互。pygame.event.get
函数将返回并清空事件队列中的所有事件,因此用for
循环进行遍历。每个事件都是一个pygame.event.Event
对象,该类定义了type
属性,当此属性为pygame.QUIT
时,代表用户点击了窗口标题栏中的“关闭”按钮,或其他退出的动作,触发了这个事件,此时将调用pygame.quit
及sys.exit
函数以安全关闭窗口并退出程序。
事件循环后,调用了pygame.display.update
函数,它将更新显示屏幕,即进行了屏幕重绘。
注意:
1. 请确保调用了sys.exit
函数,因为pygame.quit
函数只是取消初始化所有的 Pygame 模块,并不会退出程序;同时,也不要仅调用sys.exit
函数,尽管这在大多数情况下可以正常退出,但是没有正常地退出 Pygame 模块有可能会带来意想不到的后果。
2. 查阅官方文档,可以发现还有一个pygame.display.flip
函数,它的作用与pygame.display.update
函数一样,但是pygame.display.update
函数允许传入一个参数,可以重绘窗口的一部分,而不是重绘整个窗口。当然,不传参数的pygame.display.update
函数与pygame.display.flip
函数一模一样。详见官方文档解释。
完整代码
import sys
import pygame
pygame.init()
SCREEN = pygame.display.set_mode((1200, 800))
pygame.display.set_caption('First Application')
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
pygame.display.update()
代码运行截图:
结语
至此,我们的第一个用 Pygame 创建的应用程序就完成了。下一章,我们将学习 Pygame 模块中的重要的概念及对象。