• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python开发的小球完全弹性碰撞游戏代码

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了完全弹性碰撞速度公式,完全非弹性碰撞,完全弹性碰撞,完全弹性碰撞公式,完全非弹性碰撞公式等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

游戏初始化状态:

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

源码部分:

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

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

    游戏中还存在缺陷或BUG,希望志同道合者可以共同完善。
'''

__author__ = {'author' : 'Hongten',
              'Email' : 'hongtenzone@foxmail.com',
              'Blog' : 'http://www.cnblogs.com/hongten/',
              'Created' : '2013-09-28',
              'Version' : '1.0'}

class Pong(Frame):
    def createWidgets(self):
        ## 画布
        self.draw = Canvas(self, width="5i", height="5i", bg='white')

        ## 游标(控制小球移动速度,范围:[-100, 100])
        self.speed = Scale(self, orient=HORIZONTAL, label="ball speed",
                           from_=-100, to=100)

        self.speed.pack(side=BOTTOM, fill=X)

        #小球碰撞墙壁的范围
        self.scaling_right = 4.8
        self.scaling_left = 0.2
        #小球直径
        self.ball_d = 0.4
        #游标度数
        self.scale_value = self.speed.get()
        #放缩率
        self.scaling = 100.0

        #存放小球数组
        self.balls = []
        #存放小球x坐标数组
        self.ball_x = []
        #存放小球y坐标数组
        self.ball_y = []
        #存放小球x轴方向速度数组
        self.ball_v_x = []
        #存放小球y轴方向速度数组
        self.ball_v_y = []

        # 五个小球
        self.ball = self.draw.create_oval("0.10i", "0.10i", "0.50i", "0.50i",
                                          fill="red")
        self.second_ball = self.draw.create_oval("0.70i", "0.70i", "1.10i", "1.10i",
                                                 fill='black')
        self.three_ball = self.draw.create_oval("1.30i", "1.30i", "1.70i", "1.70i",
                                                 fill='brown')
        self.four_ball = self.draw.create_oval("2.0i", "2.0i", "2.40i", "2.40i",
                                                 fill='green')
        self.five_ball = self.draw.create_oval("3.0i", "3.0i", "3.40i", "3.40i",
                                                 fill='gray')

        #把五个小球放入数组
        self.balls.append(self.ball)
        self.balls.append(self.second_ball)
    &nb

您可能想查找下面的文章:

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

相关文章

  • 从Python的源码浅要剖析Python的内存管理
  • 深入讲解Python函数中参数的使用及默认参数的陷阱
  • python批量提交沙箱问题实例
  • Python使用sftp实现上传和下载功能(实例代码)
  • 简析Python的闭包和装饰器
  • python抓取京东商城手机列表url实例代码
  • py中的目录与文件判别代码
  • Python的SQLAlchemy框架使用入门
  • Python MD5文件生成码
  • python中二维阵列的变换实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Python输出9*9乘法表的方法
    • Python struct.unpack
    • 在Python的Django框架中创建和使用模版
    • Python制作爬虫采集小说
    • python实现的用于搜索文件并进行内容替换的类实例
    • Python中每次处理一个字符的5种方法
    • Python常用的日期时间处理方法示例
    • Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
    • Python 匹配任意字符(包括换行符)的正则表达式写法
    • Python实现的Kmeans++算法实例

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有