[英]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.