Skip to content

tangguangyao/Snooker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Snooker

2d桌球注释

代码的思路:

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

源代码总几乎对每行都做了注释,欢迎下载查看。

备注:有时间,我会修改这个游戏,加入花球的规则,让游戏更好玩。

http://hi.baidu.com/tang_guangyao/item/a91c5403c70c5cab03ce1baf

About

2d桌球注释

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published