Возникли проблемы с отображением текста в Pygame - PullRequest
1 голос
/ 10 ноября 2019

Я нуби в Pygame и Python в целом. Вчера я запустил проект игры с простым вертолетом, но не могу понять, почему не могу отобразить сообщение.

Я пытался использовать разные форматы кода, а также пытался переместить несколько строк здесь и там, но все еще не мог заставить его работать.

def display_gameover():
    pygame.font.init()

    font = pygame.font.SysFont(None, 100)
    text = font.render("GAME OVER", True, red)
    extRect = text.get_rect()

    screen.blit(text,(screen_height//2, screen_width//2))


    pygame.display.update()

    time.sleep(2)

if  x > screen_width - heli_width or x < 0 or y > screen_height - heli_height or y < 0:
    display_gameover()
    game_loop()

Я определил display_gameover и назвал его, как показано выше. Однако когда я пытаюсь запустить код, все работает нормально, за исключением того, что в течение 2 секунд ожидания ничего не отображается.

1 Ответ

2 голосов
/ 10 ноября 2019

Недостаточно позвонить pygame.display.update(), вы также должны обрабатывать события (например, pygame.event.pump()).
Далее я рекомендую использовать pygame.time.wait(), а не time.sleep(). Помните, что единица времени для pygame.time.wait() составляет миллисекунды.

def display_gameover():
    pygame.font.init()

    font = pygame.font.SysFont(None, 100)
    text = font.render("GAME OVER", True, red)
    extRect = text.get_rect()

    screen.blit(text,(screen_height//2, screen_width//2))

    pygame.display.update()
    pygame.event.pump()
    pygame.time.wait(2000) # 2000 milliseconds == 2 seconds

Кроме того, вы должны убедиться, что поверхность, связанная с дисплеем, инициализирована (pygame.display.set_mode()),Это означает, что если pygame был прерван с помощью pygame.quit(), то он должен быть повторно инициализирован с помощью pygame.init(), а screen должен быть установлен с помощью pygame.display.set_mode() перед вызовом display_gameover().
В качестве альтернативы не завершать pygame,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...