Количество стопов уменьшается при достижении 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,

Другие вопросы по тегам