在 pygame 中,你通常使用 Surfaces 來表示物件的外觀,使用 Rectangle 來表示它們的位置。表面就像一張包含顏色或影象的空白紙。建立曲面有兩種方法:從頭開始或通過載入影象留空。

建立一個曲面

要建立一個 Surface,你至少需要它的大小,這是一個 2 元素的寬度和高度整數序列,表示以畫素為單位的大小。

你還可以在建立 Surface 時傳遞其他引數,以按畫素 alpha 控制位深度,蒙版和其他要素,和/或在視訊記憶體中建立影象。但這超出了本例的範圍。

size = width, height = (32, 32)
empty_surface = pygame.Surface(size)

你可以使用 pygame.draw 模組在 Surface 上繪製形狀,或通過呼叫 Surface 方法 fill(color) 將其填充為顏色。引數顏色是 3 或 4 元素整數序列或 pygame.Color 物件。

載入影象

通常情況下,你希望在遊戲中使用自己的影象(稱為精靈)。使用影象建立 Surface 非常簡單:

my_image = pygame.image.load(path_to_image)

影象的路徑可以是相對的或絕對的。為了提高效能,通常明智的做法是將影象轉換為與螢幕相同的畫素格式。這可以通過呼叫 Surface 方法 convert() 來完成,如下所示:

my_image = pygame.image.load(path_to_image).convert()

如果你的圖片包含透明度(Alpha 值),則只需呼叫方法 convert_alpha()

my_image = pygame.image.load(path_to_image).convert_alpha()

阻擊器

表面需要對螢幕進行 blit 以便能夠顯示它們。Blitting 本質上意味著將畫素從一個 Surface 複製到另一個 Surface(螢幕也是 Surface)。你還需要傳遞 Surface 的位置,該位置應為 2 元素整數序列或 Rect 物件。Surface 的 topleft 將被放置在該位置。

screen.blit(my_image, (0, 0))
pygame.display.update()  # or pygame.display.flip()

除了螢幕之外,可以對其他 Surface 進行 blit。要顯示螢幕上顯示的內容,你需要呼叫 pygame.display.update()pygame.display.flip()