讀古今文學網 > 父與子的編程之旅:與小卡特一起學Python > 16.2 Pygame 窗口 >

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 中的事件。