我正在玩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很新。
答案 0 :(得分:2)
尝试替换:
if health == 0:
health = min
使用:
if health < min:
health = min
这应该有效。 我希望这会有所帮助。
答案 1 :(得分:1)
我不太确定你的最终目标是什么,因为这只是一段代码,但你需要增加health
变量或打破循环
if health == 0:
break
答案 2 :(得分:1)
添加额外的逻辑。当减少-25之后寿命为0或更少时
if health <= 0:
break
这更好,因为如果有另一个敌人击中-35而你的生命是25岁?当然,结果将是-10 <= 0
和break
。