簡體   English   中英

為什么 Python Turtle 在#Game Loop 中需要 WIN.update()?

[英]Why does Python Turtle need WIN.update() in #Game Loop?

我寫了以下#Game Loop 試圖給我的學生上一課。 在我添加行 WIN.update() 之前,烏龜不會移動或響應任何功能。 為什么那是必要的? 我創建的其他海龜#Game Loops 不需要它。 什么時候需要幫助海龜響應鍵盤命令和用戶創建的函數?

在此處輸入圖像描述

在海龜程序中, update()只有在您之前完成過tracer(0)時才需要,並且不會直接影響鍵盤事件。

但是,您的程序沒有正確組裝,因為while True:或等價物破壞了像烏龜這樣的事件驅動環境。 添加update()使您的程序有機會清除事件隊列。 我們真正應該使用的是一個定時事件。 這就是我希望您的程序片段看起來像的樣子:

def game_loop():
    if RUNNING:
        Move()  # Move the Turtle

        Barriers()  # Barrier Check

        WIN.update()  # Only if Win.tracer(0) is in effect

        WIN.ontimer(game_loop, 100)  # Delay in milliseconds

WIN.onkey(Up, 'Up')
WIN.onky(Down, 'Down')
WIN.onkey(Left, 'Left')
WIN.onkey(Right, 'Right')
WIN.listen()

game_loop()

WIN.mainloop()

請注意onkey()listen()不屬於游戲循環,它們只需要應用一次。

暫無
暫無

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

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