1. 程式人生 > >Pygame詳解(十五):pygame 模組

Pygame詳解(十五):pygame 模組

pygame

Pygame 最頂層的包。

函式 & 屬性

  • pygame.init()  —  初始化所有匯入的 pygame 模組
  • pygame.quit()  —  解除安裝所有匯入的 pygame 模組
  • pygame.error()  —  標準 pygame 異常模組
  • pygame.get_error()  —  獲得當前錯誤資訊
  • pygame.set_error()  —  設定當前錯誤資訊
  • pygame.get_sdl_version()  —  獲得 SDL 的版本號
  • pygame.get_sdl_byteorder()  —  獲得 SDL 的位元組順序
  • pygame.register_quit()  —  註冊一個函式,這個函式將在 pygame 退出時被呼叫
  • pygame.encode_string()  —  對 unicode 或位元組物件編碼
  • pygame.encode_file_path()  —  將 unicode 或位元組物件編碼為檔案系統路徑

pygame 包是可供使用的最頂層的包。Pygame 被分成許多子模組,但是並不會影響程式使用 Pygame。

為了方便,在 pygame 中絕大多數的頂級變數被放入名為“pygame.locals”的模組中。意思是說這些變數可通過以下方式匯入:

import pygame
from pygame.locals import *

當你匯入 pygame 後,所有可用的 pygame 子模組都將自動被匯入。需要注意的是,一些 pygame 模組是“可選的”,並且可能無法使用。以防萬一,Pygame 將提供了一個佔位符物件替代原來的模組,這個物件可用來測試某些功能(變數)是否可用。

函式 & 屬性詳解

pygame.init()

初始化所有匯入的 pygame 模組。

init() -> (numpass, numfail)

初始化所有匯入的 pygame 模組,如果有模組匯入失敗也不會顯示異常,但是將返回一個元組,第一個元素為成功匯入的模組數,第二個元素為匯入失敗的個數。

也許你想分開初始化不同的模組,以提高你程式的執行速度,或者不載入暫時用不到的模組。

重複呼叫 init() 方法是沒問題的,也不會有任何負面影響。即使你已經呼叫了 pygame.quit() 解除安裝所有模組也是可以的。

pygame.quit()

解除安裝所有匯入的 pygame 模組。

quit() -> None

解除安裝所有之前被初始化的 pygame 模組。當 python 直譯器關閉時,這個方法將被無條件地呼叫,所以你的程式並不需要呼叫這個方法,除非你想要終止 pygame 資源,並繼續執行其他功能。多次執行這個方法也是沒有問題的。

注意:呼叫這個方法 pygame.quit() 會結束所有模組,但不會結束你的程式。建議用正常結束 python 程式的方法來結束 pygame 程式。

exception pygame.error

標準的 pygame 異常。

raise pygame.error(message)

當 pygame 或 SDL 操作失敗時,將會引發異常。你可以捕獲任何可預見的問題並處理異常。報告異常時,會同時顯示問題的描述資訊。

它是 RuntimeError 異常的子類,用於捕獲這些異常。

pygame.get_error()

得到當前錯誤資訊。

get_error() -> errorstr

獲取 SDL 維護的一個內部錯誤訊息。當標準 pygame.error() 標準 pygame 異常引發時,這些資訊將會提供給你。

其實你很少會使用到這個方法的啦。

pygame.set_error()

設定當前錯誤資訊。

set_error(error_msg) -> None

設定 SDL 維護的一個內部錯誤訊息。當標準 pygame.error() 標準 pygame 異常引發時,這些資訊將會提供給你。

其實你很少會使用到這個方法的啦。

pygame.get_sdl_version()

獲得 SDL 的版本號。

get_sdl_version() -> major, minor, patch

返回 SDL 庫有關版本的 3 個數字。這個版本是在編譯時生成的。這個方法可用來得知哪個元件是不能正常使用的。

Pygame 1.7.0 新新增的方法。

pygame.get_sdl_byteorder()

獲得 SDL 的位元組順序。

get_sdl_byteorder() -> int

獲得 SDL 庫的位元組順序。返回 LIL_ENDIAN 表示小端位元組順序;返回 BIG_ENDIAN 表示大端位元組順序。

Pygame 1.8 新新增的方法。

pygame.register_quit()

註冊一個函式,這個函式將在 pygame 退出時被呼叫。

register_quit(callable) -> None

當呼叫 pygame.quit() 結束所有模組時,所有通過 register_quit() 方法註冊過的函式將被呼叫。這一切都是自動執行的。

一般的 pygame 使用者用不到這個方法。

pygame.encode_string()

對 unicode 或位元組物件進行編碼。

encode_string([obj [, encoding [, errors [, etype]]]]) -> bytes or None

obj:

  • 傳入 unicode 型別 -> 編碼
  • 傳入 bytes 型別 -> 不變
  • 傳入其他型別 -> 返回 None
  • 沒有傳遞 obj 引數 -> 引起 SyntaxError 異常

encoding (string):如果存在則進行編碼,預設是 unicode_escape。

errors (string):指定如何處理無法編碼的內容,預設使用反斜槓(\)代替。

etype (exception type):指定編碼錯誤引發的異常型別。預設為 UnicodeEncodeError,由 PyUnicode_AsEncodedString() 返回。對於預設的編碼和錯誤值不應該有編碼錯誤。

這個函式被用於編碼檔案路徑的時候,支援使用關鍵字引數。

Pygame 1.9.2 新增加的方法(主要用於單元測試)。

pygame.encode_file_path()

將 unicode 或 bytes 物件編碼為檔案系統路徑。

encode_file_path([obj [, etype]]) -> bytes or None

obj:

  • 傳入 unicode 型別 -> 編碼
  • 傳入 bytes 型別 -> 不變
  • 傳入其他型別 -> 返回 None
  • 沒有傳遞 obj 引數 -> 引起 SyntaxError 異常

etype(異常型別):若給出,則出現異常時報相應編碼錯誤,預設為 UnicodeEncodeError,由 PyUnicode_AsEncodedString() 返回。

這個函式被用於編碼檔案路徑的時候,結果由 sys.getfilesystemencoding() 返回,支援使用關鍵字引數。

Pygame 1.9.2 新增加的方法(主要用於單元測試)。