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