完成这个小球的完全弹性碰撞游戏灵感来自于:
下面是我花了一周下班时间所编写的一个小球完全弹性碰撞游戏:
游戏初始化状态:
最下面的游标和修改小球的移动速度
源码部分:
代码如下:
#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.小球在运动的过程中,有时候也有可能逃离画布
总结:
完成这个游戏,花了一个星期的下班时间。在这个过程中不仅回去学习了高中的数学知识,
物理知识,很多东西都忘得差不多了,不过很快又学返回来了。
新闻热点
疑难解答