pygame:替换项目/敌人的图像

时间:2014-04-16 03:28:13

标签: python image pygame

我正在尝试编写一个程序,其中“敌人”的图像一旦其生命值变为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")

这会取代吗?或者只是在它上面加载另一张图片? 让我知道我错过了什么,谢谢!

1 个答案:

答案 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]

实际上,根据您的关注,这将替换当前图像而不是仅仅覆盖它。希望有所帮助。