def colision(self):
if self.coords(self.bola)[1]<50:
self.boladir=1
if self.coords(self.bola)[1]>870:
self.jugando=0
self.pierde()
# ladrillos=self.find_withtag("brick")
def mueve_bola(self):
if self.jugando:
if self.boladir==0:
self.move(self.bola,0,-10)
elif self.boladir==1:
self.move(self.bola,0,10)
self.colision()
root.after(velocidad_bola,self.mueve_bola)
-1
A
回答
1
colision
調用本身,所以本場比賽開始時,這將每隔20毫秒調用。 mueve_bola also calls itself every 20ms. However,
mueve_bola _also_ calls
colision . So, every 20ms,
colision creates another unending stream of calls to itself every 20ms. 20 ms later
mueve_bola calls
colision again, which again starts another stream of calls every 20ms. After just one second
colision is being called 50 times every 20ms. After two seconds it will be 100 calls to
colision every 20 ms. Do you see the problem? In very little time you will have millions of calls to
colision每秒鐘。
您只需要在移動物體時計算碰撞,所以不需要每20ms調用一次自身。每次更新顯示時只需要調用一次。
我建議你創建一個每40ms左右調用一次的方法。在這裏你可以一次調整所有的座標。更新行的座標,然後更新玩家的槳,然後更新球,然後檢查碰撞。
相關問題
- 1. 多線程UI導致WPF應用程序停止工作
- 2. ObservableArray導致應用程序停止
- 3. 導入liraries導致tkinter gui停止工作
- 4. Dictionary ContainsValue()導致程序停止響應
- 5. Python/Tkinter:用大畫布銷燬窗口會導致程序停止響應
- 6. 致命例外 - 不幸的應用程序已停止工作
- 7. Cordova Windows應用程序停止工作
- 8. 應用程序停止sqlite不工作
- 9. setOnItemSelectedListener:應用程序停止工作
- 10. .NET 4.0應用程序停止工作
- 11. 應用程序停止工作
- 12. Windows應用程序已停止工作
- 13. Android Studio,應用程序停止工作
- 14. Android應用程序停止工作-Eclipse
- 15. QT應用程序停止工作
- 16. 應用程序停止工作
- 17. 應用程序已停止工作
- 18. 手機應用程序停止工作
- 19. 應用程序停止工作
- 20. 網絡應用程序停止工作
- 21. 應用程序不幸停止工作
- 22. VB.NET Me.Close()導致應用程序拋出「已停止工作」消息
- 23. 通過外部應用程序打開的新工作簿導致宏停止
- 24. 爲什麼此代碼會導致程序停止工作?
- 25. 此函數不斷導致我的程序停止工作C++
- 26. 多線程會導致程序停止?
- 27. Clickonce應用程序已停止爲WPF應用程序工作
- 28. driver.quit()導致「火狐停止工作」
- 29. VB Treeview導致vs32host.exe停止工作
- 30. @EJB批註導致servlet停止工作
太棒了!是的,現在我看到了我做出的巨大錯誤^^你絕對是對的!我會盡力按照你的說法去做:單一方法移動所有東西將會更容易實現......謝謝! – dhcarmona 2011-06-13 20:30:50