基于android的2048

Mute

发布日期: 2019-06-27 15:49:15 浏览量: 1578
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

1 课题介绍

为什么要做这个题目呢?我去回想当初定题目时候。主要就是感兴趣,2048这款游戏刚流行起来的时候,就下过来玩。我记得第一次通关花了我10盘都不到。而且到后来玩的时候,会发现玩前期很拖剧情(因为只会生成2和4)刚有意思一不小心死了又要重来,因此也想要有一些创新。所以,在功能上别于其它的同类2048并不是很多,是在游戏机制上有所调整。使得游戏更加有惊喜和快节奏,也加大了难度,添加随机数比例如下:

数字 概率(千分之)
2 800
4 100
8 50
16 20
32 15
64 8
128 4
256 2
512 1

我花了蛮久时间去玩做好的新2048,并没有通关,有时候好气啊,突然出现的大数字会乱了节奏,但就是这样也变得更想玩了

这里放一张比较接近成功的图:

同学老师们,你们不服也来玩玩看,的确精彩了很多。

2 系统概要设计

主布局使用LinearLayout布局,布局走向是垂直。游戏主类Gameview,在安卓上设计交互方式(触控设计),实现卡片类card,然后添加2048游戏卡片,和对卡片属性的设计。再添加随机数,实现游戏逻辑(何种情况叠加,添加)游戏的计分和游戏的判定结束。

3 详细设计

将详细设计分为以下几个步骤:

  • 设计2048的游戏布局
    主布局使用LinearLayout布局,布局走向是垂直。

  • Android平台触控交互设计
    先要判断玩家手势意图,要记录开始(手点上去)的位置x,y,结束(手离开)的位置x1,y1。判断用户移动的意图,是向哪个方向,为了防止左上左下这些方向,在判断意图前,先对X=x1-x与Y=y1-y进行绝对值比较,按大的方向来。
    难点1:并且,为了防止误操作,若X,Y均小于5,视为误操作,无移动意图。

  • 游戏的卡片类
    因为2048是4*4=16格子的一个游戏,先要整体布局,并且每一个卡片里对于一个数字,(之后比较是否迭加就是getnum()卡片里的数字)之后是添加游戏卡片,首先要设计卡片宽高,根据不同手机宽高l,h,比较其中较短的,(min-10)/4作为每个格子的宽高。一共4行4列。再对格子和背景之间的颜色进行配置,使得每一个格子都可以分开来(像素间隔都10)
    难点2:num是int,直接加入看起来没错,跑起来会报错,应该num+“”加上一个空字符,则变成了字符串不会报错。
    难点3:直接设计4*4卡片没用会一排平铺开,setcdumncount(4)设计为4列可以解决。

  • 随机数的添加
    2048的游戏过程就是一开始随机生成两个位置随机的不同数字,并且在每一次的移动过后再在没有数字的位置随机添加一个随机数。在这上面,我做了创新。首先遍历所有卡片,如果数字是0,则显示空字符(一开始所有格子都先是0)将所有数字放在一个数组emptPoints里,开始前将数组清空数组,然后就是按我设计的概率可以添加随机数去取代0,可以被显示出来。

  • 实现游戏逻辑
    在触控设计之后,根据玩家意图,当做出游戏选择移动时候,实现游戏逻辑。以向左划为例:从当前位置for(x1=x+1;x1<4;x1++)如果右边有数字(大于0)做出判断a:当前为空,则右边数字替换左边(相当于把右边数字移到左边)b:如果两个卡片数字相同,则右边数字清0,左边乘以2。

  • 游戏计分
    每一次发生数字的叠加,5中的b。将叠加的数字加入score中,并且在每一次的移动后,都添加随机数。

  • 游戏判定结束

    • 当16个格子都没有空位置
    • 任意相邻位置数字均无相同
    • 判定游戏结束。

4 实验结果



5 所存在的问题及未来计划

首先,界面的美工,不同数字的颜色并没有区分开来,看起来不够舒服,希望能找到好看的颜色填充进去。其次,想要增加悔步功能,因为一局时间较长,真正好玩的部分在后面。

上传的附件 cloud_download 2048.zip ( 1.00mb, 99次下载 )
error_outline 下载需要14点积分

发送私信

生命可以随心所欲,但不能随波逐流

11
文章数
9
评论数
最近文章
eject