标签:android c style class blog http
以下内容拔自百度:
2048是比較流行的一款数字游戏。原版2048首先在github上公布,原作者是Gabriele Cirulli。它是基于《1024》和《小3传奇》的玩法开发
而成的新型数字游戏。随后2048便出现各种版本号,走各大平台。由Ketchapp公司移植到IOS的版本号最为火热,如今约有1000万下载,其名字跟
原版一模一样。衍生版中最出名的是《2048六边形》版本号,先后在全球81个国家中的board game中排进了前200。安卓版非常火爆的有《挑战2048》,其2.0.0版以后还加入了双人对战。其次比較特别的有2048中国朝代版。更有2048自己定义版,能够自己定义文字和图片。《2048~》是
IOS中流行的一款。
游戏规则非常easy,每次能够选择上下左右当中一个方向去滑动,每滑动一次,全部的数字方块都会往滑动的方向靠拢外,系统也会在空白
的地方乱数出现一个数字方块,同样数字的方块在靠拢、相撞时会相加。系统给予的数字方块不是2就是4,玩家要想办法在这小小的16格范围
中凑出“2048”这个数字方块。游戏的画面非常easy,一開始总体16个方格大部分都是灰色的,当玩家拼图出现数字之后就会改变颜色,总体格调
非常是简单。在玩法规则也非常的简单,一開始方格内会出现2或者4等这两个小数字,玩家仅仅须要上下左右当中一个方向来移动出现的数字,所
有的数字就会向滑动的方向靠拢,而滑出的空白方块就会随机出现一个数字,同样的数字相撞时会叠加靠拢,然后一直这样,不断的叠加最
终拼凑出2048这个数字就算成功。假设你是一个数字爱好者,或者是比較有天赋的数学天才,就算不是数学天才,一般的玩家也能够玩转这
款游戏,感兴趣的话就去下载体验一番。
CSDN上已经有非常多关于2048的博文了,可是基本上都是基于cocos2d的版本号,事实上,作为一个游戏,用cocos2d开发确实快,说白了就
是一个三消类游戏的翻版。可是本文介绍的是直接基于Android的开发思路,比較适用于做Android项目的朋友学习。
怎样去实现呢?我们先看看2048的截图:
核心是中间的面板,就是一个NXN的格子,移动的时候,会计算合并、新增单元格。
一、确定View实现
1、布局首选GridLayout,不得不说,4.0的这个新控件真是Android开发的福音,不了解的朋友请Google之。
2、单元格布局首选FrameLayout,去做一个小格子,里面包括一个TextView或者ImageView
二、算法实现
1、生成数字为0、2、4、8……假设是0则不显示数字,假设是其它数字则依据数字推断底色
2、实现上下左右滑动事件,基本原理是这样,先去推断每行(列),以为移动后的序列,一定是中间不会有0的,讲这4个值存入一个list,
依据游戏规则计算,再返回到这行(列),说的比較抽象,我们能够这样看:
2 2 0 4 假如这是某行,我们如今左移,首先将2 2 0 4 存入一个list(去掉0),即list为 2 2 4 然后依据规则2和2合并,则list为 4 4,
最后返回到这一行(列),这样解释不知道是不是清楚了点。
为什么要这样做呢?事实上2048的算法有非常多,大家也能够想想,我也看过那些cocos2d的算法,发现有些问题就是:循环太多,
推断次数太多,这easy造成的一个最大的问题就是——卡,有些人可能玩过一个Android版本号的2048,那个流畅度跟iOS的实在
是差了不止一点,所以我们须要提高算法的效率,这样的算法每次推断最多仅仅须要16次循环和16次读写,相比某版本号在16次循环
中再循环推断的算法要提高不少效率
3、加入随机生成Item,滑动时记录一个滑动前的矩阵状态,有两个作用,一个是推断是否滑动过,一个是为了做撤销功能,
程序控制一个记录空格的list,每次都会又一次计算存在的空格
4、推断结束,若空格不为0,游戏一定没有结束,若为0,则推断每行——相邻是否存在同样数字,每列——相邻是否存在同样数字
三、其它
1、New Game
2、分数记录
3、撤销上次移动
4、自己定义2048背景图
以上,主要的思路以及梳理好了,以下就開始一步步按思路实现了。
PS 源代码正在完好中,须要源代码的请留言,完毕后会发给须要的朋友
标签:android c style class blog http
原文地址:http://www.cnblogs.com/mfrbuaa/p/3761391.html