2d桌球注释
代码的思路:
- 先初始化游戏:添加母球和目标去,添加加塞控制(平时不怎么打桌球,这个加塞还是第一次遇到,还特意在网上查了下什么叫加塞,还在优酷上面看了加塞的视频,囧,其实加塞就是打旋球,旋球在碰到其他球和碰到边缘时,不会直接反向反弹,还需要计算旋转对球路线的影响)
- 开始打球是绑定mousemove,mousedown,mouseup事件,注意,这里还有记录鼠标的坐标,用来增加一个目标球,而且这个目标球和母球直接还有虚线连接
- 在开始打球时,还添加了一个力量槽,用来记录打球的力度,也就是出球时的速度
- 在球打出时,移除所有之前绑定的mousemove,mousedown,mouseup事件,并且记录好出球时的角度,速度等参数
- window.setInterval(roll,1000 / RATE),这句话是关键,这里表示不间断执行roll函数的频率,这里是10毫秒一次,也就是每10毫秒就处理一次移动中球的情况
- roll函数是核心,首先遍历移动球数组,对每个移动的球一次处理,处理碰到边缘情况,处理是否进入袋中的情况,以及处理和其他小球的相对关系,这里在处理其中一个移动的小球时,会对其他所有没有进袋的小球做是否有碰撞可能的处理
- roll里面有一个小球相互碰撞的函数,很牛
源代码总几乎对每行都做了注释,欢迎下载查看。
备注:有时间,我会修改这个游戏,加入花球的规则,让游戏更好玩。
http://hi.baidu.com/tang_guangyao/item/a91c5403c70c5cab03ce1baf