Вы можете создать два новых события (FIRE_ANIMATION_START
, STAR_ANIMATION_START
), которые вы отправляете в очередь событий с задержкой (с pygame.time.set_timer(eventid, milliseconds)
). Затем в цикле событий вы просто проверяете это.
FIRE_ANIMATION_START = pygame.USEREVENT + 1
STAR_ANIMATION_START = pygame.USEREVENT + 2
# ... Your code ...
for event in pygame.event.get():
if event.key == pygame.K_SPACE and buttonHighlight == 0:
pygame.time.set_timer(FIRE_ANIMATION_START, 10) # Post the event every 10 ms.
pygame.time.set_timer(STAR_ANIMATION_START, 1000) # Post the event every 1000 ms.
elif event.code == FIRE_ANIMATION_START:
pygame.time.set_timer(FIRE_ANIMATION_START, 0) # Don't post the event anymore.
FireAnimation() #displays a fire image
if player[6] == 'Magic': #you deal damage to the enemy
enemy[0] = enemy[0]-(((player[1])+((player[1])*1)-enemy[4]))
else:
enemy[0] = enemy[0]-(((player[1])+((player[1])*1)-enemy[3]))
elif event.code == STAR_ANIMATION_START:
pygame.time.set_timer(STAR_ANIMATION_START, 0) # Don't post the event anymore.
StarAnimation() #displays a star image
if enemy[6] == 'Magic': #enemy deals damage to you
player[0] = player[0]-(((enemy[1])+((enemy[1])*1)-player[4]))
else:
player[0] = player[0]-(((enemy[1])+((enemy[1])*1)-player[3]))
Документация для pygame.time.set_timer(eventid, milliseconds)
. Кроме того, поскольку код прямо сейчас, в нем есть ошибки. Атрибуты для событий различаются для разных типов событий, поэтому всегда проверяйте, является ли событие KEYDOWN
или USEREVENT
, прежде чем обращаться к атрибутам event.key
или event.code
. Различные типы и атрибуты можно найти здесь .