Такие вещи обычно делятся на две фазы. Первое, когда включение включено. Модель предназначена для включения питания на некоторое время, оно выглядит как 5000
мс из вашего кода вопроса.
Таким образом, при включении дополнительной мощности должен быть раздел , который записывает время начала. Затем, когда используется питание, необходимо проверить время, чтобы определить, все еще ли оно включено.
Во-первых, давайте переместим это число в переменную-константу, поэтому, если вы решите увеличить или уменьшить его. требуется только одно изменение.
TIME_MEGA_JUMP = 5000 # milliseconds of power-up
Когда игрок нажимает на элемент питания, просто запишите время. Примечание: self.player.mega_jump_time
должно быть инициализировано в 0
в вашем классе игрока, иначе тест прыжка вызовет ошибку, потому что переменная еще не существует.
if ( <power-up test condition> ):
player.mega_jump_time = pygame.time.get_ticks()
Затем, когда игрок прыгает , проверьте время, чтобы убедиться, что включение все еще действует:
...
elif ( event.type == pygame.KEYUP ):
time_now = pygame.time.get_ticks()
...
elif ( keys[pygame.K_SPACE] ): # Jump
# Is the player still mega_jumping
if ( player.mega_jump_time + TIME_MEGA_JUMP > time_now ):
# TODO: code Me-me-mega-jump
pass
else:
# TODO: code for normal jump
pass