Первое, что я хотел реализовать, — это «Нитро», мгновенное увеличение скорости, которое расходуется при использовании. Игрок начинает с 0 нитро и получает одно за каждое второе набранное очко.
Сначала следующий код дает желаемый результат, нажатие пробела перед получением первой единицы нитро ничего не делает. Как только nitro достигает 1, оператор if больше никогда не закрывается, и игрок может использовать nitro произвольное количество раз. Функция Remove.nitro работает правильно и удаляет одну единицу нитро при каждом использовании, в результате чего встроенный нитро-тикер отображает отрицательные числа.
Я экспериментировал с добавлением функции печати внутри цикла он ведет себя так, как ожидалось (только начинает печатать, когда нитро достигает 1, и останавливается снова, когда оно падает ниже).
Почему функции onkeypress ведут себя по-другому?
Код: Выделить всё
while game_is_on:
screen.update()
time.sleep(.025)
screen.onkeypress(fun=player.move, key='Up')
if scoreboard.nitro >= 1:
screen.onkeypress(fun=player.nitro, key='space')
screen.onkeyrelease(fun=scoreboard.remove_nitro, key='space')
car_manager.drive()
Подробнее здесь: https://stackoverflow.com/questions/770 ... ent-fullfi
Мобильная версия