我总体上是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秒的等待时间内没有显示任何内容。
答案 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。