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