Python 在游戏中添加Healthbar

Python 在游戏中添加Healthbar,python,pygame,Python,Pygame,我是Python新手,最近开始使用PyGame。我在网上读了一篇教程,它对2D游戏进行了一步一步的编码。我把代码修改成新的内容。我在敌人身上增加了一个生命条,使游戏更具挑战性,但每当屏幕上有一个以上的敌人时,当我只射击一个敌人时,所有敌人的生命值都会降低,然后当一个敌人从屏幕上移除时,所有敌人的生命值都会重置。我知道我可能需要创建一个类,但我想知道我是否可以将敌人添加到列表中,然后分别降低每个敌人的生命值 编辑: 为消除混淆: 如果我向敌人射击,只有敌人的生命值会降低,而不是所有敌人的生命值都会

我是Python新手,最近开始使用PyGame。我在网上读了一篇教程,它对2D游戏进行了一步一步的编码。我把代码修改成新的内容。我在敌人身上增加了一个生命条,使游戏更具挑战性,但每当屏幕上有一个以上的敌人时,当我只射击一个敌人时,所有敌人的生命值都会降低,然后当一个敌人从屏幕上移除时,所有敌人的生命值都会重置。我知道我可能需要创建一个类,但我想知道我是否可以将敌人添加到列表中,然后分别降低每个敌人的生命值

编辑: 为消除混淆: 如果我向敌人射击,只有敌人的生命值会降低,而不是所有敌人的生命值都会降低。我希望屏幕上的每个敌人都有一个单独的生命值,当特定敌人的生命值降到零或以下时,该值应立即删除

以下是健康栏的代码:
你应该和每一个坏蛋保持联系

badguys = [ 
    [800,100,150],  
    [800,200,150],  
    [800,300,150],  
] 
还是更复杂

badguys = [ 
    [ [800,100], 150],  
    [ [800,200], 150],  
    [ [800,300], 150],  
] 
还是作为字典

badguys = [ 
    {"pos": [800,100], "health": 150}, 
    {"pos": [800,200], "health": 150}, 
    {"pos": [800,300], "health": 150}, 
]
这样您几乎可以使用class:)


寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。若列表中有许多坏人,那个么您必须使用列表中的许多healt值
healthvalue=[150150,…]
。或者你可以把badguy和它的healt保留为
badguys=[[800100150]]
@furas谢谢,这很有效。我认为如果我在列表中添加另一个值,它会弄乱blit()。你可以使用更复杂的列表
badguys=[[[800100],150]]
或字典
badguys=[{“pos”:[800100],“health”:150}]
。请不要向我们抛出随机代码片段,而是准备一个我们可以复制、运行和测试的文件。
badguys = [ 
    [800,100,150],  
    [800,200,150],  
    [800,300,150],  
] 
badguys = [ 
    [ [800,100], 150],  
    [ [800,200], 150],  
    [ [800,300], 150],  
] 
badguys = [ 
    {"pos": [800,100], "health": 150}, 
    {"pos": [800,200], "health": 150}, 
    {"pos": [800,300], "health": 150}, 
]
class BadGuy()

    def __init__(self, x, y, health):
        self.rect = pygame.Rect(x, y, 100, 100)
        self.health = health
        self.image = rand_enemy = random.choice(enemyArray)
        #...

    def draw(self)
        self.screen.blit(self.image, self.rect)

# ---

    badguys = [ 
        BadGuy(800, 100, 150), 
        BadGuy(800, 200, 150), 
        BadGuy(800, 300, 150), 
    ]