请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

isStrike() 为什么return !s 而不是s?逻辑怎么反了?既然这样为什么不直接初始化 s=true

正在回答 回答被采纳积分+3

2回答

qq_许Y1世承诺_04041127 2018-03-22 23:21:31

//img1.sycdn.imooc.com//szimg/5ab3c88200019b9503750665.jpg

这里初始化 s = false,如果不做检测直接 return !s,返回的就是 true 代表撞到铅笔了。

中间检测的代码是图中的区域,意思是当小鸟在这些区域的时候表示没有碰撞 赋值 s = true,return !s。返回的就是 false 了。

其实这是个反向逻辑,假设是碰撞的,然后看哪些情况是没有碰撞,如果符合条件就把 s = true,return 的就是 false,剩下的情况就是碰撞了,直接 return true;


其实这里的检测还有个 bug,就是小鸟可以一直在上面铅笔的上面一直飞,这个留给大家解决(很简单,参考地板碰撞检测)。

2 回复 有任何疑惑可以回复我~
  • 这里为什么是用"||"连接而不是用"&&"连接?撞到上方铅笔也会满足b.bottom<p.top的条件呀?晕了晕了。。。
    回复 有任何疑惑可以回复我~ 2018-08-24 13:30:14
  • 上一个铅笔的判断就不满足了
    回复 有任何疑惑可以回复我~ 2018-11-28 17:15:26
  • 因为任何一个条件不符合就表示撞了。而不是所有条件满足才撞。
    回复 有任何疑惑可以回复我~ 2019-03-13 10:06:00
傅猿猿 2018-03-15 17:13:43

怎么写都可以呀,只要TRUE和FALSE的状态对就行了呀,当时边讲边敲就写了个有点绕的逻辑,精简也是OK的呀,真仔细,回头等我出院了也精简下代码

0 回复 有任何疑惑可以回复我~
  • 您讲的时候,没有说明是反向逻辑,应该很多同学都会理解不来吧
    回复 有任何疑惑可以回复我~ 2018-07-04 11:34:20
  • 老师的讲解是正向的,代码其实是反向的,难怪我觉得怪怪的。
    回复 有任何疑惑可以回复我~ 2019-03-13 10:08:47
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信