Pygame:如何在 pygame 中插入精灵而不是绘制我的角色

Pygame: How to insert sprite instead of drawing my character in pygame

所以我在 youtube 上观看了一些关于如何使用 Pygame 创建 Pacman 的视频,它只展示了如何绘制一个简单的黄色圆圈,我试图用实际的 sprite 替换那个简单的形状但是我无法让它工作 这是我的代码,我有一个名为“Player”的 class,我在其中绘制我的吃豆人角色,我使用 pygame 的绘制函数绘制一个简单的黄色圆圈

def draw(self):
        pygame.draw.circle(self.app.screen,PLAYER_COLOUR, (int(self.pix_pos.x), int(self.pix_pos.y)),
        self.app.cell_width//2-2)

然后我有另一个 class 叫做“app_class”,我在其中创建了一个新的“Player”实例 class 并将其放在正确的位置

我尝试用 image.load 替换平局,但没有成功。

模块pygame.draw只包含绘制简单形状的函数。如果那不是你想要的,那么你必须使用另一个模块。

pygame.image.load 是一个将图像从硬盘加载到主内存的函数。你可以把它想象成从你的计算机中获取一个图像到你的程序中。所以它除了使图像可用之外什么都不做。

为了能够绘制图像,您必须明确告诉 pygame 这样做。您可以通过调用 Surface 对象上的方法 blit 来实现,在您的例子中是屏幕。

所以首先在程序开始加载图像。你不应该在每个游戏循环中调用这个函数,因为它很昂贵。只调用一次。

my_image = pygame.image.load('path/to/my_image.jpg').convert()

convert方法只是一种让图像在你的程序中更高效的方法。它会转换图像,使其具有正确的颜色格式。如果您排除它,您应该看不出有什么不同,但如果您这样做,您将获得性能。

您需要将其 blit ('draw') 到屏幕上。在你的情况下,你会做这样的事情:

def draw(self):
    self.app.screen.blit(my_image, (x, y))

其中 x 和 y 是您希望图像所在的位置,或者更准确地说,是您希望左上角所在的位置。目前,x 和 y 是未定义的,所以你必须自己定义它们。将它们设为全局或将它们放入您的 class 并使用 self.xself.y.

访问它们

此外,图片可能不是您想要的尺寸。要修复它,您可以在加载后立即调整它的大小,如下所示:

width  = 50  # Or whatever size you want it to be.
height = 50
my_image = pygame.image.load('path/to/my_image.jpg').convert()
my_image = pygame.transform.scale(my_image, (width, height))