這篇博客主要是從功能上介紹幾個Pygame的模塊,沒有深入到代碼細節。大部分內容來自《Python基礎教程》。
- pygame
pygame模塊會自動導入其他Pygame模塊,所以如果用了 import pygame,就能自動訪問其他模塊,比如pygame.display等。
pygame模塊包括Surface函數(和一些其他工具),它可以返回一個新的Surface對象。Surface對象就是一個有確定尺寸的空圖像,可以用來進行圖像繪制和移動。移動(blit方法)只意味着將內容從一個表面轉移到另外一個表面上面。單詞blit是從屬於block transfer的縮寫BLT衍生而來。
init函數式Pygame游戲的核心。它必須在進入游戲的主事件循環之前調用,它會自動初始化其他所有模塊。
如果需要捕捉Pygame特有的錯誤時,還需要error類。
- pygame.locals
pygame.locals模塊包括在你自己的模塊作用域內使用的名字(變量),還包括事件類型、鍵和視頻模式等的名字。在導入所有內容(from pygame.locals import *)時它用起來是很安全的。如果你知道自己需要的內容,也可以導入更加具體的內容(比如 from pygame.locals import FULLSEREEN)。
- pygame.display
pygame.display模塊包括處理Pygame顯示方式的函數,其中包括普通窗口和全屏模式。比如有這些函數:
flip:更新顯示。一般來說,當修改當前屏幕的時候需要經過兩個步驟。首先,需要對get_surface函數返回的Surface對象進行所有需要的修改。然后調用pygame.display.flip更新顯示 以反映你的修改。
update:在只想更新屏幕一部分的時候使用update函數,而不是flip函數。它可以從RenderUpdates類的draw方法中返回的矩形列表一起使用。
set_mode:設定顯示的類型和尺寸。會返回一個Surface對象,代表了在桌面上出現的那個窗口,三個參數第一個為元祖,代表分 辨率(必須);第二個是一個標志位,具體意思見下 表,如果不用什么特性,就指定0;第三個為色深。
標志位 | 功能 |
---|---|
FULLSCREEN | 創建一個全屏窗口 |
DOUBLEBUF | 創建一個“雙緩沖”窗口,建議在HWSURFACE或者OPENGL時使用 |
HWSURFACE | 創建一個硬件加速的窗口,必須和FULLSCREEN同時使用 |
OPENGL | 創建一個OPENGL渲染的窗口 |
RESIZABLE | 創建一個可以改變大小的窗口 |
NOFRAME | 創建一個沒有邊框的窗口 |
set_caption:設定Pygame程序的標題,當游戲以窗口模式運行時,顯示為窗口的標題。
get_surface:在調用pygame.display.flip或者pygame.display.blit前返回一個可用於畫圖的Surface對象。
- pygame.font
pygame.font模塊包括Font函數。字體對象用於表現不同的字體,可以用於將文本生成為可以再Pygame中用作普通圖像的圖像。
- pygame.sprite
pygame.sprite模塊包括兩個非常重要的類:Sprite和Group。
Sprite類是所有可視游戲對象的基類,有過游戲編程經驗甚至只是玩過游戲的人應該都知道“精靈”這個詞,其實Sprite就是精靈。為了實現自己的游戲對象,需要子類化Sprite,覆蓋它的構造函數以設定image和rect屬性(決定Sprite的外觀和放置的位置),再覆蓋update方法,在Sprite需要更新的時候可以調用。
Group類的實例(和它的子類)用作Sprite對象的容器。一般來說,使用group類還是不錯的作法。在一些簡單的游戲中,只要創建名為sprites或者allsprites或者其他類似的組,然后將所有的Sprite對象添加到上面即可。當調用Group對象的update方法時,它就會自動調用所有Sprite對象的update方法。Group對象的clear方法用於清理它包含的所有Sprite對象(使用回調函數實現清理),draw方法可以用於繪制所有的Sprite對象。
- pygame.mouse
關於鼠標的模塊,可以設置參數、獲取信息等。如可以使用pygame.mouse.set_visible來設置光標是隱藏還是可見,用pygame.mouse.get_pos來獲取鼠標的位置。
- pygame.event
pygame.event模塊會追蹤鼠標單擊、鼠標移動、按鍵按下和釋放等事件。使用pygame.event.get可以獲取最近事件列表。
- pygame.image
這個模塊用於處理保存在GIF、PNG或JPEG等文件內的圖像。pygame.image.load函數用來讀取圖像文件,並且創建包括該圖像的Surface對象。