zoukankan      html  css  js  c++  java
  • 我也来开发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 源代码正在完好中,须要源代码的请留言,完毕后会发给须要的朋友

  • 相关阅读:
    Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
    ASP.NET Core Docker部署
    将.NET Core部署在Docker
    linux 常用命令
    Wpf(Storyboard)动画简单实例
    uwp之图片旋转动画实现
    2011年度十大杰出IT博客获奖感言
    将BT下载对抗到底
    P3271 [JLOI2016]方 容斥+数学
    GCD is Funny
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/3761391.html
Copyright © 2011-2022 走看看