在pygame中显示文本时遇到问题

时间:2019-11-09 21:59:21

标签: python pygame

我总体上是pygame和python中的nubie。我昨天开始了一个简单的直升机游戏项目,但我不知道为什么我不能显示消息。

我尝试使用不同的代码格式,还尝试在此处四处移动几行,但仍然无法正常工作。

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 个答案:

答案 0 :(得分:2)

仅调用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

此外,您必须确保与显示器关联的Surface已初始化(pygame.display.set_mode())。 这意味着如果pygame被pygame.quit()终止,那么它必须由pygame.init()重新初始化,并且screen必须由pygame.display.set_mode()设置,然后才能调用display_gameover()
或者,不要终止pygame。