Есть ли способ сделать это, если оператор выполняется только один раз?

Я пытаюсь создать сценарий, который дает игроку 5 жизней за каждые 100 очков. Это работает, но слишком хорошо. Когда я запускаю код и набираю 100 очков, он не перестает давать жизни и прекращается только тогда, когда я получаю больше очков.

Это код, который я использую:

def increase_lives():
    global lives
    global score
    global extralives
    
    if score % 100 == 0 and score != 0 or keyboard.lctrl and keyboard.ralt:
        extralives = 1
    if extralives == 1:
        lives += 5
        extralives -= 1

Я использую Thonny с PyGame и PGZero. Любая помощь очень ценится.

Вам нужна дополнительная глобальная переменная для хранения очков, за которые вы уже отдали жизни. Только если новый счет больше, добавьте больше жизней.

Michael Butscher 29.07.2024 06:51
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы можете создать временную переменную, чтобы отметить «веху».

global lives
global score
global extralives
global milestone

if (score % 100 == 0 and score != 0 and score != milestone) or (keyboard.lctrl and keyboard.ralt):
    extralives = 1
    milestone = score
if extralives == 1:
    lives += 5
    extralives -= 1

Я не эксперт, но думаю, вам следует использовать какой-нибудь флаг, чтобы ограничить его один раз.

В лучшем случае это комментарий; а не реальный ответ.

ray 29.07.2024 16:15

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