如何在Pygame中使HP成为实例变量

时间:2015-10-26 07:31:07

标签: python class pygame instance-variables

我在这里遇到了 完全相同 的问题:Health for each enemy,似乎他找到了一个适合他的答案。但是,答案是针对java代码而我正在使用Pygame,所以我不明白如何将他们所做的事情应用到我的Pygame代码中。

有谁知道怎么做才能让我游戏中的每个敌人都没有共享相同的马力量?他发现他需要让他的班级变量瞬间完成,但我不知道该怎么做。

这是僵尸代码。注意如何为整个类设置hp值:

for bullet in bullet_list:
            block_hit_list = pygame.sprite.spritecollide(bullet, zombie_list, False)
            for i in block_hit_list:
                zombie.hp -= 1
                bullet.kill()
                if self.hp <= 0:
                    pygame.sprite.spritecollide(bullet, zombie_list, True)
                    bullet.kill()
                    score += 100

这是一个子弹击中僵尸碰撞代码:

{{1}}

1 个答案:

答案 0 :(得分:1)

你的Enemy课很好。由于您使用self.hp = 3hp已经是您想要的实例属性。

但你的碰撞代码似乎错了。我想它应该像

for bullet in bullet_list:
    # get a list of zombies that are hit
    zombies = pygame.sprite.spritecollide(bullet, zombie_list, False)

    # for each of those zombies
    for z in zombies:
        z.hp -= 1         # reduce the health of that very zombie
        bullet.kill()
        if z.hp <= 0:     # and if the health is <= 0
            z.kill()      # remove it 
            score += 100  # and get some points