0

我正在 pygame 中开发一个小游戏,并且我设置了一个健康变量,所以每次我的玩家被敌舰击中时,我的健康都会减少 25,但是有时(如果我的玩家快速穿过屏幕)我能够将此值设为 0 以下,它会继续减少 25 为负数。

有什么办法可以设置它,一旦达到 0,分数就不能低于 0?

到目前为止,这是我的代码:

for player in player_list:

    block_hit_list = pygame.sprite.spritecollide(player, block_list, True)

    for block in block_hit_list:
        health -= 25
        collision.play()

    if health < 0:
        health = max(value, 0)

    if health == 0:
        gameover.play()
        collision.stop()
        player_list.remove(player)
        all_sprites_list.remove(player)
        block_list.remove(block)
        all_sprites_list.remove(block)

更新

我已经更新了代码,现在它似乎运行正常,不确定我是否使用了有意义的东西(如果是,欢迎任何改进):(我对 python 很陌生。

4

3 回答 3

2

尝试更换:

if health == 0:

    health = min

和:

if health < min:

    health = min

这应该有效。我希望这有帮助。

于 2014-04-20T20:24:16.007 回答
1

添加额外的逻辑。减少-25后寿命为0以下时:

if health <= 0:
    break

这更好,因为如果有另一个敌人命中 -35 而你的生命是 25?结果当然是-10 <= 0and break

于 2014-04-20T20:30:21.983 回答
1

我不太确定您的最终目标是什么,因为这只是一段代码,但您需要增加health变量或中断循环

if health == 0:
    break
于 2014-04-20T20:22:56.133 回答