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.x
和 self.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))
所以我在 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.x
和 self.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))