Почему моя задержка игры происходит раньше, чем я этого хочу? - PullRequest
0 голосов
/ 20 июня 2019

Я создаю игру в Pygame, и я хотел, чтобы текст «Уровень завершен» в конце уровня.Я хотел создать задержку после того, как текст будет скопирован, чтобы он отображался в течение нескольких секунд.Однако задержка продолжает происходить до того, как мой текст отображается, несмотря на то, что строка кода находится после того, как текст будет закрыт.Вот ссылка на мою игру:

Swamp_Game

Я пытался использовать функцию pygame.time.delay(), но перед моим текстом пауза продолжалась.

# lines 101-107 on main.py

screen.blit(field, field_rect)
core_text(screen, "Level Complete!", 100, 150, 200, BLACK)
pygame.time.delay(2000)
screen.blit(swamp, swamp_rect)
level_2() # function to initiate level 2
clock.tick(20)
pygame.display.flip()

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

1 Ответ

1 голос
/ 20 июня 2019

но пауза продолжалась до моего текста.

Текст выводится до задержки, но не отображается на дисплее.

Конечно, вы должны обновить отображение либо pygame.display.flip(), либо pygame.display.update(), до pygame.time.delay().
Кроме того, вы должны обрабатывать события (например, pygame.event.pump()) - некоторые системы нуждаются в обработке событий для обновления дисплея.

pygame.display.flip()
pygame.event.pump()
pygame.time.delay(2000)
pygame.event.pump()
...