最佳实战:用Cocos2d-x3.x和C++11编写2048游戏以及游戏AI(全民2048 Android版上线啦)

话说,年仅19岁的帅气小伙子Gabriele Cirulli于2014年3月完成并发布在github上,游戏设计来自于《1024》,而《1024》灵感来源于《Threes!》的移动端游戏。然而游戏飙升的人气超乎他的想象,人们忘记了Flappy Bird, 2048成了 网络上“最上瘾的东西”。

我是完全为了熟悉Cocos2d-x3.x版本,才写这个游戏的。这个游戏的玩法如下:

该游戏使用方向键让方块上下左右移动。如果两个带有相同数字的方块在移动中碰撞,则它们会合并为一个方块,且所带数字变为两者之和。每次移动时,会有一个值为2或者4的新方块出现。当值为2048的方块出现时,游戏即胜利。

游戏难度在于移动加合并的操作,其实也不难了,只是我觉得写的不优雅。要是不用lambda,那会更加难看。其他功能实现起来都没啥说的。当然还有很多地方是可以完善的。

最后我还给这个游戏写了个AI,理论上可以达到很高的成功率。当时是晚上8点测试的,跑到晚上12点,平均一局需要移动1000次,如果每0.5秒一次,500秒一局,即一局需要大概8分钟。因为有出现的不仅仅是2,还可能是4,而且失败时肯定不需要这么多时间,不管怎样,测的结果不是很好。我想主要是因为效率不高吧,计算量较大,其次是跟电脑配置有关系了,毕竟每一步的时间间隔不能太久,测试时间不够长也是个原因。这个留个以后改进吧。

最后,附上图片和源代码:



************************全民2048上线啦*************************


源码地址:https://github.com/booirror/game-2048

APK下载:http://apk.hiapk.com/appinfo/com.uboxsoft.puzzle/2

注:

1. 有多名网友反映,移动或合并后位置错误。我电脑上很正常,根据网友的反映,貌似移动结束后坐标变成0,0了,这问题终于解决了,是cocos版本导致的。我用的是3.3版本,最新版由于底层函数做了修改,从而出现了这个问题。代码稍后我会更新到github上(6月8号之前)。对此,我很感谢其中一位网友,名字就不说了,不确定他是否愿意透露名字。

2. 适配问题。这个我承认是代码没写好,使用FIXED_WIDTH并修改相应坐标可以达到满意效果。

3. 想编译出Android版的同学,需要自己修改Android.mk文件。

(完)


  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值