标签:
小梦今天把2048的游戏源代码给大家分享一下,其实感觉这个重在算法,UI很简单,而且几乎没有用到什么windows phone的API。小梦遇到最主要的问题就是对触摸事件的处理,我刚开始想到的就是 Manipulation的系列事件,不过在测试的时候不知道为什么我设置的ManipulationDelta,ManipulationStart,ManipulationCompleted 竟然都全无反应,我还以为WP8.1不支持了,于是把所有的触摸事件试了个遍,到最后发现当把ManipulationMode设置为”All”的时候,终于有了反应,(当然,这个不一定要是ALL,设置为你支持的触摸事件就可以,比如平移,旋转。)想问一下:是不是必须要设置ManipulationMode然后Manipulation才有反应呢? 我测试的结果是必须要有。于是我便用了ManipulationStart和ManipulationCompleted和获取触摸开始和结束的坐标,不过当完成后,发现游戏虽然正常运行,但是反应超级慢,明显延迟1秒左右。我开始以为是算法有问题,太费时间了,于是看了好多其他人公开的算法,发现复杂度都差不多。最后想到了在触摸事件的引发顺序中,ManipulationCompleted时间比较靠后,或许是这个原因。于是便想用ManipulationDelta事件试下,看看反应会不会快点,结果反应的确快了,只不过一次触摸会触发多次。解决方法是在使用它的Complete()方法,这个方法师完成触摸而不引发惯性时间。
还有一个小问题就是布局生成16个小方格时候,我采用的是在Grid里放置Button来实现。就是大家要注意button按钮本身有默认属性是有Margin,Padding,borad,以及状态属性和各个状态之间的转移动画,要想实现2048中的方格效果,我们应该删除或者修改这些属性。还有Grid也有默认的Margin属性,我们也得改掉。
至于2048的完整实现过程,改天再写吧。
欢迎大家吐槽和建议,源码还有许多改进的地方,小梦还会在修改的。
源码献上: windows phone 2048 (大家只要注册一下就可以了,没有其他限制。)
标签:
原文地址:http://www.cnblogs.com/bcmeng/p/3870590.html