簡體   English   中英

為什么未顯示“游戲結束”文本?

[英]Why is the “Game Over” text not displayed?

我有此代碼,當我單擊ESC時 ,看不到“ Game Over”。 該程序等待兩秒鍾,然后關閉而不顯示文本。 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()

您必須從事件循環中刪除pygame.quit()調用。 pygame.quit()初始化所有pygame模塊。 調用此函數后,無法繪制任何內容,對任何pygame指令的進一步調用都會導致異常。
我建議在.delay應用程序之前通過pygame.event.pump()處理pygame事件。 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM