sallon
2014-05-15 23:21
最后isGameOver()方法判断是否结束的时候是有问题的,调用那些移动的方法返回值的true or false的时候,它们会自动移动,这样就是一个BUG!
我确实还是没有懂。isgameover就是在做判断,没有具体的移动啊。 isgameover中调用nospace( board ) 和 nomove( board ) )做判断。 nomove()调用canMoveLeft( board );canMoveRight( board );canMoveUp( board );canMoveDown( board )四个函数做判断。注意,这里调用的四个函数都是判断,不是移动!和moveLeft,moveRight,moveUp,moveDown不同。 isgameover在每个回合都会执行,如果有bug,在第一回合游戏的时候就能体现出来了。 你可以在研究一下我的源代码:http://www.liuyubobobo.com/sub-html5/code/game/2048/course/index.php 如果有问题,随时交流。如果是我的错误,我一定更正。 P.S.1 我想粘贴源代码失败了;请慕课网解决这个问题; P.S.2 用户无法在慕课网上下载源码,给用户带来很大的障碍!请慕课网尽早解决!
谢谢你的回复,我参照你的教程自己编写了一个拼图游戏!受益匪浅!
另外,以上文字我本来分段了,为什么贴上去段落也没有了。。。。请慕课网解决。
我想我的问题版主还是没有明白,我的意思是最后的一个方法就是isGameOver这个方法的实现是有问题的,理论上来讲我们在判断游戏结束没有的情况是所有的位置都不能移动,但是我们使用的方法并不能挨个移动每一个元素,如果这样的话呢,会使得相邻的可以合并的元素自动合并,主观上来讲最为游戏,我们只告诉玩家能不能做,但是不能替玩家做。我的改进方法是加入参数去判断是否合并。
顶了
游戏的逻辑应该是没有问题的。但是setTimeOut如果时间设置的不合适,确实会发生最后一步还没有移动完就gameover的情况。不知道你遇到的是不是这种情况。事实上,这种处理方法确实比较初级。但是鉴于这个课程的重点放在游戏框架和游戏逻辑上,很多细节处理使用的是比较初级的技术,有兴趣的话可以查阅更多资料,完善游戏:)
慕课网2048私人订制
70013 学习 · 588 问题
相似问题