Pygame是一个用于Python的多媒体库,用于制作游戏和多媒体应用程序。它是一种使用 SDL(Simple DirectMedia Layer)编写的游戏库。
在本节中,我们将介绍pygame函数的基础知识,但不定义类和对象。
导入模块
要使用Pygame库中的方法,必须首先导入模块:
import pygame
import语句将pygame版本和pygame网站的链接写到控制台:
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
Pygame导入语句始终放在程序的开头。 它将pygame类,方法和属性导入当前名称空间。 现在可以通过pygame.method()调用此新方法。
例如,我们现在可以使用以下命令初始化或退出pygame:
pygame.init()
pygame.quit()
函数display.set_mode()设置屏幕尺寸。 它返回一个我们分配给变量屏幕的Surface对象。 此变量将是最常用的变量之一。 它代表了我们看到的窗口:
screen = pygame.display.set_mode((800, 500))
您现在可以运行该程序并对其进行测试。 目前,它的作用很小。 它会打开一个窗口并立即将其关闭。
显示事件循环
任何交互式应用程序中最重要的部分是事件循环。 对事件做出反应允许用户与应用程序进行交互。 事件是程序中可能发生的事情,例如
鼠标点击
鼠标移动
键盘按键
操纵杆动作
以下是一个无限循环,该循环将所有事件打印到控制台:
while True:
for event in pygame.event.get():
print(event)
尝试移动鼠标,单击鼠标按钮或在键盘上键入内容。 您执行的每个操作都会产生一个事件,该事件将打印在控制台上。 看起来像这样:
[linuxidc@linux:~/www.linuxidc.com]$ python3 linuxidc.com.py
pygame 1.9.6
Hello from the pygame community. https://www.pygame.org/contribute.html
<Event(1-ActiveEvent {'gain': 0, 'state': 1})>
<Event(1-ActiveEvent {'gain': 0, 'state': 2})>
<Event(1-ActiveEvent {'gain': 1, 'state': 1})>
<Event(4-MouseMotion {'pos': (66, 143), 'rel': (66, 143), 'buttons': (0, 0, 0), 'window': None})>
<Event(4-MouseMotion {'pos': (71, 143), 'rel': (5, 0), 'buttons': (0, 0, 0), 'window': None})>
由于我们处于infite循环中,因此无法从应用程序中退出该程序。 为了退出程序,使控制台成为活动窗口并键入ctrl-C。 这会将以下消息写入控制台:
<Event(1-ActiveEvent {'gain': 0, 'state': 1})>
^CTraceback (most recent call last):
File "linuxidc.com.py", line 7, in <module>
for event in pygame.event.get():
KeyboardInterrupt
正确退出事件循环
为了从应用程序内部使用窗口关闭按钮(QUIT事件)正确退出应用程序,我们修改了事件循环。 首先,我们介绍运行的布尔变量,并将其设置为True。 在事件循环中,我们检查QUIT事件。 如果发生,我们将运行设置为False:
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.quit()
一旦事件循环,我们将调用pygame.quit()函数以正确结束应用程序。
定义颜色
颜色定义为基色为红色,绿色和蓝色的元组。 这称为RGB模型。 每个基色都表示为介于0(最小)和255(最大)之间的数字,该数字在内存中占用1个字节。 RGB颜色因此表示为一个3字节的值。 混合两种或更多种颜色会产生新的颜色。 通过这种方式,总共可以显示1600万种不同的颜色。
让我们将基色定义为树基值的元组。 由于颜色是常数,因此我们将使用大写字母写它们。 缺少所有颜色都会导致黑色。 所有三个分量的最大值均为白色。 三个相同的中间值产生灰色:
BLACK = (0, 0, 0)
GRAY = (127, 127, 127)
WHITE = (255, 255, 255)
树的基色定义为:
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
通过混合两种基色,我们获得了更多的颜色:
YELLOW = (255, 255, 0)
CYAN = (0, 255, 255)
MAGENTA = (255, 0, 255)
在事件循环的结尾,我们添加了以下内容:
screen.fill(YELLOW)
pygame.display.update()
fill(color)方法使用指定的颜色填充整个屏幕。 此时,将不会显示任何内容。 为了显示任何内容,必须调用pygame.display.update()函数。
切换背景色
在程序的开头,我们添加了一个新的变量background并将其初始化为灰色:
background = GRAY