Почему моя игра задерживается раньше, чем я этого хочу?

Я создаю игру в 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()

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


person the_coder    schedule 20.06.2019    source источник


Ответы (1)


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

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

Конечно, вы должны обновить отображение с помощью pygame.display.flip()< /a> или pygame.display.update() перед pygame.time.delay().
Далее вы должны обработать события (например, pygame.event.pump()) — в некоторых системах требуется обработка событий для отображения. Обновить.

pygame.display.flip()
pygame.event.pump()
pygame.time.delay(2000)
pygame.event.pump()
person Rabbid76    schedule 20.06.2019
comment
Спасибо. Не могли бы вы показать мне, где это будет в моем коде? Я попытался добавить pygame.display.flip() и pygame.event.pump() до того места, где сейчас находится pygame.time.delay(2000), но результат не изменился. - person the_coder; 20.06.2019
comment
@the_coder core_text .blit текст на screen, не так ли? Попробуйте поставить 2-й pygame.event.pump() после pygame.time.delay - person Rabbid76; 20.06.2019