基于Android的2048手机游戏App设计与实现

2017-08-24 15:02沈旭
计算机时代 2017年8期
关键词:手机游戏卡片动画

沈旭

摘 要: 开发2048手机游戏App的目的,在于它是一款休闲益智小游戏,可以通过游戏减轻精神压力,锻炼思维能力。介绍了游戏App的设计开发过程,对游戏的逻辑算法、触控交互、卡片设计、统计计分等作了详细剖析。最后对该App做了Android手机实际测试,结果表明,游戏App达到了设计要求,可以满足人们休闲益智的需要,同时对设计开发流程作了总结。

关键词: Android; App; 2048; 游戏

中图分类号:TP311.1 文献标志码:A 文章编号:1006-8228(2017)08-29-04

Abstract: The purpose of developing 2048 number puzzle game App is that it is a casual puzzle game, which can relieve mental pressure and exercise thinking ability through games. This paper introduces the design and development process of game App, and analyzes the logic algorithm, touch interaction, card design and statistical scoring etc. the App is tested on the Android mobile phone, and the results show that the game App meets the design requirements, and can meet the needs of people's leisure enjoying and intelligence benefiting. At the same time, the design and development process is summarized.

Key words: Android; App; 2048; game

0 引言

隨着信息技术的快速发展,以智能终端为平台的应用在人们生活中占据了越来越重要的位置。物质生活条件的提高,使人们产生更多精神方面的需求,如手机应用App就成了提高精神生活需求的新平台[1]。近年来,手机游戏成为游戏产业中最重要的一部分,涌现出了诸如愤怒的小鸟,水果忍者,flappy bird等诸多优秀的手机游戏App。一款手机游戏App能够流行,主要依靠其操作简单性和益智趣味性[2-3]。2048游戏App是一款休闲益智小游戏,可以调节精神、释放压力,锻炼人们的思维能力。

1 游戏规则与步骤

1.1 游戏规则

2048游戏规则简单易懂:①开始时棋盘内随机出现两个数字,2或4;②用户可以选择上下左右四个方向移动合并数字,若棋盘内的数字出现移位或合并,视为有效移动;③用户选择的方向上若有相同的数字则合并,每次有效移动可以同时合并,但不可以连续合并;④合并所生成的数字之和,就是有效得分;⑤用户选择的方向行或列前方有空格则出现移位;⑥有效移动一步,棋盘无数字的空格就随机出现数字2或4;⑦棋盘被数字填满,无法进行有效移动,游戏失败;⑧棋盘上出现2048,游戏胜利。游戏App系统结构图如图1所示。

1.2 游戏步骤

游戏步骤如下:①点击2048游戏App图标将会出现开机动画,之后进入游戏主界面;②在主界面单击“关于游戏”菜单进入“关于”界面,介绍游戏版本、版权等基本信息;③在主界面单击“游戏帮助”菜单进入帮助界面,介绍游戏基本规则;④在主界面单击“开始游戏”菜单进入游戏界面;⑤用户点击重新开始按钮重玩游戏,通过合并相同数字,最后达到2048的时候获胜,如果游戏区域没有空格,同时没有能够合并的相同数字则失败;⑥用户点击手机的返回键返回游戏主界面;⑦点击“退出游戏”,游戏结束退出。

2 游戏设计

2048手机游戏App设计需要解决三个关键技术:实现原理、卡片设计和触控交互设计。

2.1 实现原理

⑴ 初始化游戏:调用函数initGameView()设置方格布局朝向和背景颜色,完成游戏初始化,游戏即将开始[4]。

⑵ 开始游戏:调用startGame()函数开始游戏,使用addRandomNum()函数向游戏区域随机加入两个方块。首先搜索游戏区域所有空位置,然后随机生成两个数字2或4,并产生动画效果。

⑶ 卡片移动:2048游戏通过游戏中所有的方格朝某个方向移动,合并相同数字的方块[5]。有四个函数负责移动,分别是上、下、左、右,这里以往左移动为例作分析。对游戏区域所有方块向左移动。在以下两种情况下合并数字:当前位置为空,右侧为非空,合并后,当前位置卡片的数字为其右侧卡片的数字,右侧卡片数字清零;当前位置为非空卡片,右侧卡片数值和它相等,合并后,当前位置卡片数字取合并后的和,右侧卡片清零。只要卡片产生有效移动,就调用addRandomNum()随机生成一个新卡片。

⑷ 游戏计分:卡片移动时,判断是否有两个相同数字进行合并,有合并就计分,如果是最高分就保存[6]。

2.2 卡片设计

在2048游戏App界面设计完成后,主要工作就是卡片移动和卡片设置。

⑴ 创建卡片

private void addCards() { //添加卡片样式的方法

Card c;

LinearLayout line;

LinearLayout.LayoutParams lineLp;

for (int y=0; y < LINES; y++) {

line=new LinearLayout(getContext());

lineLp=new LinearLayout.LayoutParams(-1, Card.width);

addView(line, lineLp);

for (int x=0; x

c=new Card(getContext());

line.addView(c, Card.width, Card.width);

cardsMap[x][y]=c;

}

}

}

⑵ 类Card继承FrameLayout,作为游戏卡片。使用addScaleAnimation()函数设置卡片数字、样式及动画效果。

⑶ 判断在触屏操作下同一方向上的卡片是否可以合并,可以合并的卡片做加法运算。

2.3 触控交互设计

2048手机游戏App控制卡片能够根据触屏操作在上、下、左、右四个方向上移动,因此,需要添加4个相应的事件监听。使用View.OnTouchListener来侦听触屏事件,计算触屏按下和抬起来时offsetX和offsetY的值,从而预测手势移动的方向[7]。

3 游戏架构

3.1 主要功能类

⑴ Open类:开机动画实现类,主要负责开机动画的生成,通过渐变实现动画效果。

⑵ IndexActivity类:主界面实现类,主要负责主界面的生成。

⑶ AboutActivity类:关于游戏实现类,主要负责关于界面的生成。

⑷ GameHelp类:游戏帮助实现类,主要负责帮助界面的生成。

⑸ GameView类:游戏中最主要的类,游戏中的操控以及相应的事件都包含在该类当中。

⑹ Card类:游戏卡片实现类,主要负责游戏卡片,卡片数字和样式的实现。

3.2 主要程序结构

2048手机游戏App主要程序结构如图2所示。

通过游戏的运行过程介绍程序结构图中各个类在游戏中的作用,具体如下:①点击图标启动游戏后,首先看到开机动画(Open.java);②开机动画结束后将会出现主界面(IndeActivity.java);③用户点击游戏帮助时,会显示帮助界面(GameHelp.java);④用户点击关于游戏时,会显示关于界面(AboutActivity.java);⑤用户点击开始游戏时,会进入游戏界面(GameView.java),同时会启动卡片类(Card.java)负责游戏中卡片数字和样式的实现。

4 游戏运行效果与测试

4.1 歡迎界面

欢迎界面主要实现的是开机动画以及菜单项的功能。开机动画利用图片渐变效果实现。在主界面实现游戏的功能选择,主界面有四个按钮,点击相应按钮实现相应功能。欢迎界面效果图如图3所示。

4.2 运行界面

运行界面实现游戏运行、分数界面展示的功能。运行界面主要包含游戏区域、分数区域、功能区域三个部分。游戏区域实现游戏功能,分数区域显示当前分数和最高分数,功能区域只有一个按键,就是重新开始,在游戏进行中,可以随时点击该按键重新开始游戏。

4.3 游戏测试

把开发好的2048手机游戏App的APK安装包下载到Android手机,并安装、运行,实际运行效果如图4、图5和图6所示。

5 结束语

2048手机游戏App采用Java作为开发语言、Android Studio作为开发平台,以面向对象的编程思想[8]进行设计开发。App在Android手机上的测试运行结果表明,2048游戏App达到了设计要求,可以满足人们在休闲放松的同时达到锻炼思维能力的目的。该App可以放到软件应用商店或市场,向人们提供免费下载,满足人们的游戏需求。未来,需要改进的地方在于,开发两人对战版或多人对战版的2048游戏App,进一步提高游戏的趣味性。

参考文献(References):

[1] 邓文渊.Android开发基础教程[M].人民邮电出版社,2014.

[2] 张玉清,王凯,杨欢等.Android安全综述[J].计算机研究与发展,2014.51(7):1385-1396

[3] 徐诚等.零点起飞学Android开发[M].清华大学出版社,2013.

[4] 刘剑卓.Android手机游戏开发从入门到精通[M].中国铁道出版社,2012.

[5] 倪红军.基于Android平台的消息推送研究与实现[J].实验室研究与探索,2014.33(5):96-100

[6] 张思阳,黄同成.基于Android的自助游APP的设计与实现[J].电脑知识与技术,2017.1:95-97

[7] 李华明.Android游戏编程之从零开始[M].清华大学出版社,2011.

[8] 倪红军,张学成.基于Android的移动学习评价系统的设计与实现[J].计算机技术与发展,2016.26(8):109-112

猜你喜欢
手机游戏卡片动画
摆卡片
倒过来的卡片
做个动画给你看
动画发展史
我的动画梦
一张卡片
让手机游戏成为传统文化的传播新渠道
手机游戏对大学生的负面影响及对策分析
我是动画迷
浅谈手机游戏业务发展策略