Количество стопов уменьшается при достижении 0 - Python
Я работаю над небольшой игрой в 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.
3 ответа
Я не совсем уверен, какова ваша конечная цель, так как это всего лишь фрагмент кода, но вам нужно либо увеличить свой health
переменная или разрыв цикла
if health == 0:
break
Попробуйте заменить:
if health == 0:
health = min
с:
if health < min:
health = min
Это должно работать. Надеюсь, это поможет.
Добавьте дополнительную логику. Когда жизнь равна 0 или меньше после снижения -25:
if health <= 0:
break
Это лучше, потому что, если есть другой враг, который поражает -35, а ваша жизнь - 25? Конечно, результат будет -10 <= 0
а также break
,