我正在尝试编写一个程序,其中“敌人”的图像一旦其生命值变为0就会发生变化。我对每个元素都有不同的类,但我在此类下有这个。
class Enemy(pygame.sprite.Sprite):
def __init__(self, gs=None):
pygame.sprite.Sprite.__init__(self)
...initialization stuff...
self.image = pygame.image.load("enemy.png") #enemy image
self.rect = self.image.get_rectangle()
self.hp = 40 #initial health
def damage(self):
if self.rect.colliderect(self.user.rect): #collision/how the health goes down
self.hp = self.hp - 5
现在这里是我很好奇的部分,我想加载一个新图像替换我对这个敌人的旧图像。我可以做/添加(在损坏功能中)
if(self.hp == 0):
self.image = pygame.image.load("dead.png")
这会取代吗?或者只是在它上面加载另一张图片? 让我知道我错过了什么,谢谢!
答案 0 :(得分:2)
您应该在创建对象时将所有图像加载到init
方法中,然后可以使用列表稍后进行分配/更改。这是一个例子:
class Enemy(pygame.sprite.Sprite):
def __init__(self, gs=None):
pygame.sprite.Sprite.__init__(self)
self.images = [pygame.image.load("enemy.png"), pygame.image.load("dead.png")]
self.current_image = self.images[0]
self.rect = self.current_image.get_rectangle()
然后你可以这样做:
if(self.hp == 0):
self.current_image = self.images[1]
实际上,根据您的关注,这将替换当前图像而不是仅仅覆盖它。希望有所帮助。