首页 » 父与子的编程之旅:与小卡特一起学Python » 父与子的编程之旅:与小卡特一起学Python全文在线阅读

《父与子的编程之旅:与小卡特一起学Python》16.2 Pygame 窗口

关灯直达底部

开始绘制图形时首先需要建立一个窗口。代码清单 16-1 显示了一个非常简单的程序,它只是创建了一个 Pygame 窗口。

代码清单 16-1 创建一个 Pygame 窗口**

import pygamepygame.initscreen = pygame.display.set_mode([640, 480])  

试着运行这个程序。你看到了什么?取决于你使用的操作系统,你可能会看到屏幕非常迅速地弹出了一个窗口(填充为黑色)。你也可能发现弹出的窗口无法关闭。这是怎么回事?

嗯,Pygame 的作用就是为了建立游戏。游戏本身不做任何事情,只是与玩家交互。所以 Pygame 有一个事件循环(event loop)不断检查用户在做什么,比如按键、移动鼠标或关闭窗口。Pygame 程序需要有个事件循环一直运行。在我们的第一个 Pygame 程序中,并没有启动事件循环,所以程序没有正常运行。

要想保持 Pygame 事件循环一直运行,一种方法是使用 while 循环。我们希望这个循环可以随着程序的运行一直运行下去。因为 Pygame 程序通常没有菜单,所以用户要关闭程序的话,需要使用窗口右上角的 ×(Windows),或者左上角的关闭按钮(MacOS)。对 Linux 系统来说,关闭按钮的位置取决于使用的窗口管理器和 GUI 框架。但如果你在使用 Linux,我想你应该知道怎么关闭窗口。

下面的代码清单打开了一个 Pygame 窗口,并在用户关闭它之前一直保持运行状态:

代码清单 16-2 使 Pygame 窗口正确工作

import pygamepygame.initscreen = pygame.display.set_mode([640, 480])running = Truewhile running:    for event in pygame.event.get:if event.type == pygame.QUIT:     running = Falsepygame.quit  

运行以上代码,你会看到一个正常工作的 Pygame 窗口,该窗口会在你尝试关闭时关闭。

while 循环中的语句到底是如何工作的呢?它使用了 Pygame 的事件循环。但这个话题我们留到第 18 章再讲,届时我们会讲解 Pygame 中的事件。