Почему текст «Игра окончена» не отображается? - PullRequest
0 голосов
/ 03 июня 2019

У меня есть этот код, и когда я нажимаю ESC , я не вижу «Игра окончена».Программа ждет две секунды и закрывается без отображения текста.Pygame 1.9.6

Что я делаю не так?

run = True
while run:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            pygame.quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_LEFT:
                lead_x_change = -block_size
                lead_y_change = 0
            elif event.key == pygame.K_RIGHT:
                lead_x_change = block_size
                lead_y_change = 0
            elif event.key == pygame.K_UP:
                lead_x_change = 0
                lead_y_change = -block_size
            elif event.key == pygame.K_DOWN:
                lead_x_change = 0
                lead_y_change = block_size
            elif event.key == pygame.K_ESCAPE:
                run = False

    game_display.fill(white)
    lead_x += lead_x_change
    lead_y += lead_y_change
    pygame.draw.rect(game_display, black, [lead_x, lead_y, width, height])
    pygame.display.update()

    clock.tick()

draw_text_middle("Game Over", 40, (0, 0, 0, 255), game_display)
pygame.display.update()
pygame.time.delay(2000)
pygame.quit()

1 Ответ

2 голосов
/ 03 июня 2019

Вы должны удалить вызов pygame.quit() из цикла событий. pygame.quit() деинициализировать все модули Pygame. После вызова этой функции ничто не может быть нарисовано, дальнейшие вызовы любых инструкций pygame вызовут исключение.
Я рекомендую обрабатывать события pygame по pygame.event.pump() до .delay применения. Это позволяет Pygame обрабатывать внутренние действия:

run = True
while run:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
            # pygame.quit() <---------- delete

    # [...]

draw_text_middle("Game Over", 40, (0, 0, 0, 255), game_display)
pygame.display.update()

pygame.event.pump()

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