首页 > 代码库 > 我也来开发2048之确定思路

我也来开发2048之确定思路

以下内容拔自百度:

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 源代码正在完好中,须要源代码的请留言,完毕后会发给须要的朋友