最佳实战:用Cocos2d-x3.x和C++11编写2048游戏以及游戏AI(全民2048 Android版上线啦)
2015-05-05 00:46
627 查看
话说,年仅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文件。
——如果本文对您有帮助的话,那就小额打赏1元以资鼓励呗[b]——[/b]
[b]——不攒钱娶媳妇的程序员不是好男人——[/b]
(完)
我是完全为了熟悉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文件。
——如果本文对您有帮助的话,那就小额打赏1元以资鼓励呗[b]——[/b]
[b]——不攒钱娶媳妇的程序员不是好男人——[/b]
(完)
相关文章推荐
- 开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写
- android 游戏 实战 打飞机 实现主角以及主角相关元素(3)
- 2048聚合版开源代码,cocos2d-js编写,基于CocosEditor开发工具,可运行Android,ios,html5等
- Android实战打飞机游戏之子弹生成与碰撞以及爆炸效果(5)
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写
- iOS-cocos2d-X 游戏开发之七】整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码,Android导入打包运行即可!
- 学习开发cocos2d-x 游戏 实战篇(2)之 欢迎 界面编写
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写
- android 游戏 实战打飞机游戏 子弹生成与碰撞 以及爆炸效果(5)
- 【iOS-cocos2d-X 游戏开发之七】整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码,Android导入打包运行即可!
- 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode,Xcode编写&编译代码,Android导入打包运行即可!
- android 游戏 实战打飞机游戏 BOSS的设计 以及胜利失败页面(6结束)
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(2)之 欢迎 界面编写
- cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发
- 跟着BOY学习开发cocos2d-x 游戏 实战篇(1)之 loading 界面编写
- 【Himi之Cocos2d-iOS游戏开发】系列博文26篇整合以及Android书籍的源码和样章▃11月10日更新第二十六章
- cocos2d-x游戏开发系列教程-坦克大战游戏之敌方坦克AI的编写
- cocos2d-x游戏开发系列教程-坦克大战游戏之敌方坦克AI的编写
- android中自己编写一个2048的游戏
- cocos2d-x游戏开发实战原创视频讲座系列1之2048游戏开发