首页 > 编程 > Python > 正文

python开发的小球完全弹性碰撞游戏代码

2020-02-23 04:55:36
字体:
来源:转载
供稿:网友

完成这个小球的完全弹性碰撞游戏灵感来自于:

下面是我花了一周下班时间所编写的一个小球完全弹性碰撞游戏:

游戏初始化状态:

最下面的游标和修改小球的移动速度

源码部分:

代码如下:
#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.小球在运动的过程中,有时候也有可能逃离画布

    总结:
    完成这个游戏,花了一个星期的下班时间。在这个过程中不仅回去学习了高中的数学知识,
    物理知识,很多东西都忘得差不多了,不过很快又学返回来了。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表