完成這個小球的完全彈性碰撞游戲靈感來自于:
下面是我花了一周下班時間所編寫的一個小球完全彈性碰撞游戲:
游戲初始化狀態:
最下面的游標和修改小球的移動速度
源碼部分:
代碼如下:
#python tkinter
#python version 3.3.2
from tkinter import *
'''
判斷
兩個小球
{
圓心:A(x1,y1) 半徑:r X軸速度:Vax Y軸速度:Vay
圓心:B(x2,y2) 半徑:R X軸速度:Vbx Y軸速度:Vby
}
碰撞的條件是:
1.兩個小球的圓心距離不大于兩小球半徑之和(r+R),即:
{
(x2 - x1)^2 + (y2 - y1)^2 <= (r + R)^2
}
2.小球碰撞后,兩小球的數度交換,即:
{
tempVax = Vax
tempVay = Vay
Vax = Vbx
Vay = Vby
Vbx = tempVax
Vby = tempVay
或:
Vax = Vax + Vbx
Vbx = Vax - Vbx
Vax = Vax - Vbx
Vay = Vay + Vby
Vby = Vay - Vby
Vay = Vay - Vby
}
游戲規則:
五小球在畫布中移動,他們之間會產生碰撞,當然小球和上下左右都會產生碰撞
碰撞后,小球會改變方向返回
而最下面的游標則用于調節小球的移動速度,游標的范圍是[-100, 100]
缺陷或BUG:
1.在修改游標數據從而改變小球移動速度的時候,小球移動的距離得不到及時的更新
導致小球可能會逃離畫布
2.小球在運動的過程中,有時候也有可能逃離畫布
總結:
完成這個游戲,花了一個星期的下班時間。在這個過程中不僅回去學習了高中的數學知識,
物理知識,很多東西都忘得差不多了,不過很快又學返回來了。
新聞熱點
疑難解答