在 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()