基于android的2048游戏---设计与实现Word文档下载推荐.docx
《基于android的2048游戏---设计与实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于android的2048游戏---设计与实现Word文档下载推荐.docx(38页珍藏版)》请在冰点文库上搜索。
![基于android的2048游戏---设计与实现Word文档下载推荐.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/23c143c2-205a-4eb4-b52a-a67cd71b1507/23c143c2-205a-4eb4-b52a-a67cd71b15071.gif)
本文是在通过对系统进行详细分析的情况下,基本的确定了系统的相关的功能要求,对游戏的关卡设置、菜单界面、屏幕绘制和布局进行了设计,实现了一款界面清晰、内容丰富的2048游戏,它能够让人们在这个快节奏的生活压力中得到缓解。
关键字:
Android;
游戏;
益智
Designandimplementationof2048gamesbasedonAndroid
Abstract
Nowadays,electronicgameshaveseepedintopeople'
slife,andplaysanincreasinglyimportantrole.Itcanbesaid,withhisrapiddevelopmentofelectronicgames,todayisnotonlyakindofentertainment,buttheformationofaculturalphenomenon,hasastrongnationalcharacterandrichculturalconnotation.Withthegamesoftwaresalesinthemarket,theculturealsospread.
2048thegamebelongstothepuzzlegameinelectronicgames,itdidentertainment,fun,educationalunity.Puzzlegameistouseyourbraintothinkinordertowinthegames.Asimplepuzzlegamecanmakethegameplayerdevelopmentbrainconstantlyinentertainment.Soastoachievethelearningintheentertainment.
ThepreliminarystudyonthedevelopmentofAndroidapplication,designeda2048gamebasedonAndroidplatform.Inthispaperthroughthedetailedanalysisofsystem,thebasictodeterminethesystem'
srelatedfunctionalrequirements,setting,renderingandlayoutofthescreenmenuinterface,thegame'
slevelforthedesign,implementationofaclearinterface,richcontentofthe2048game,itcanletpeoplegetreliefinthisfasttherhythmoflifepressure.
KeyWords:
Game;
Puzzle
目 录
1绪 论 1
1.1背景 1
1.1.1手机的应用市场发展现状 1
1.1.2国内外现状 1
1.1.3课题意义 1
1.2本章小结 2
2开发环境的介绍和搭建 3
2.1开发环境的介绍 3
2.1.1JDK的介绍 3
2.1.2Eclipse的介绍 3
2.1.3AndroidSDK的介绍 3
2.2开发环境的搭建 3
2.2.1JDK的安装与环境变量配置 3
2.2.2AndroidSDK与Eclipse的安装与配置 4
2.2.3Android虚拟机AVD的配置 4
2.3本章小结 5
3系统的需求分析和概要设计 6
3.1系统需求分析 6
3.1.1系统功能需求分析 6
3.1.2游戏基本规则 7
3.2系统概要设计 7
3.2.1系统流程的设计 7
3.2.2系统模块设计 8
3.3本章小结 10
4系统实现 12
4.1开始界面的实现 12
4.2游戏界面的实现 12
4.3游戏滑屏卡片移动的实现 13
4.4重新开始游戏功能的实现 19
4.5关卡的实现 21
4.6游戏帮助的实现 23
4.7本章小结 24
5测 试 25
5.1游戏系统测试 25
5.1.1游戏流程测试 25
5.1.2游戏模式 27
5.2本章小结 28
6总结与展望 28
6.1论文总结 28
6.2展 望 29
致 谢 29
参考文献 30
1绪 论
第1章主要是对课题的总体介绍,主要包括对课题的背景资料简介、国内外研究现状,还有就是对课题研究的价值的介绍。
1.1背景
1.1.1手机的应用市场发展现状
随着3G的越来越普及以及手机应用的日益丰富还有智能水平的不断的提高,从便携性和随身性这两方面来考虑,电脑所带来的体验已经不能跟手机相提并
论了,他已经完美的超过了电脑[1]。
现如今Android、苹果等各智能手机已经基本占领整个手机市场,从而使得更多应用的出现,然而手机游戏应用在其中占领主要的位置。
随着Android智能手机的普及以及游戏种类的多元化,使得Android手机游戏用户规模保持着稳步增长之势[2,3]。
1.1.2国内外现状
目前国内外的Android开发还是主要以应用开发为主,主要分成3类:
企业应用、通用应用以及游戏应用。
第一类应用的开发主要是一些大公司为了自己的品牌而开发的。
第二类的应用主要是一些创业型公司或者独立开发者为了盈利开发的应用。
第三类应用目前跟第二类应用相同[4]。
2048小游戏是一款最近风靡全球的手机游戏,简单的游戏模式和趣味的玩法,几乎游戏下载排行榜的前10名都可以看到“他的身影”。
1.1.3课题意义
现如今,手机游戏已在我们的生活中占据一席之地,并在一步步的壮大。
可以说,随着他的迅猛发展,现今的手机游戏已经不单单是一种缓解压力的工具,而是形成了一种文化现象。
随着游戏软件在市场的一步步壮大,与其有关的文化也随之传播。
32
现有2048游戏最大的不足在于过度强调简洁,它是由数字组成的游戏,所以在长时间的游戏后就会感觉无聊,同时在熟知玩法后就会知道下一个要拼出的数字,这就缺乏神秘感,当一款游戏缺乏了神秘和趣味时就注定失败。
所以我们要勇于创新,将2048游戏开发出不同的版本,当玩家觉对拼接数字感到无聊时可以有不同的选择。
2048还有一大缺点就是当玩家拼出‘2048’时游戏就会结束,这样就会让玩家感到失落,所以我们要创作一个永无止境的游戏,让玩家去不断的超越自己。
1.2本章小结
本章首先介绍了本游戏2048的研究背景,主要是以手机的应用市场发展现状和国内外现状两方面来阐述,以及简单的介绍了本课题的意义。
2开发环境的介绍和搭建
本章是对Android应用开发的开发环境进行简单的介绍以及如何搭建。
2.1开发环境的介绍
2.1.1JDK的介绍
JavaDevelopmentKit(JDK)是Java语言的软件开发工具包。
Java的核心就是JDK,JDK主要包括了Java基础类库、Java运行环境以及Java工具。
它主要是为Java程序员开发而发布的免费开发工具包[5,6]。
2.1.2Eclipse的介绍
Eclipse是一个基于Java的和开源的开发平台,刚开始只是用于Java语言的开发,现在人们使用一些外挂程式使得Eclipse可以开发一些其他的计算机语言。
Eclipse对他本身而言它只是一个框架平台,但最多的外挂程式使得它变得具有灵活性[7]。
2.1.3AndroidSDK的介绍
SDK(softwaredevelopmentkit)是软件开发工具包。
AndroidSDK指的是
Android专属的软件开发工具包[8]。
2.2开发环境的搭建
2.2.1JDK的安装与环境变量配置
(1)从网上下载JDK1.6或者JDK1.7版本。
(2)双击文件安装JDK。
(3)环境变量的配置:
右击“我的电脑”-->
"
属性"
-->
“高级系统设置”-->
环境变量"
[9]。
环境变量的设置界面分“用户变量”和“系统变量”[10]。
在系
统变量里点击新建在变量名中输入“JAVA_HOME”,在变量值中填入JDK的安装路径;
接着新建classpath变量,变量值设为:
.;
%JAVA_HOME%\lib;
%JAVA_HOME
%\lib\tools.jar,然后双击“系统变量”中存在的path在弹出的对话框中添加变量值:
%JAVA_HOME%\bin;
%JAVA_HOME%\jre\bin,最后运行->
cmd,输入javac
,如果出现用法说明,则表示成功[11,12]。
2.2.2AndroidSDK与Eclipse的安装与配置
在网上搜索adt-bundle-windows并下载。
下好之后直接解压缩,此文件为已经集成了Eclipse和AndroidSDK的完整版,这样就可以适合一些新手。
2.2.3Android虚拟机AVD的配置
在Eclipse菜单栏中点击Window->
AndroidVirtualDeviceManager[13],在弹出的窗口中点击“new”按钮,进入到创建的AVD配置窗口,可以创建自己想要的AVD[14],如图2.1所示:
图2.1AVD配置图
配置成功后,选中创建好的AVD并点击“start”按钮弹出对话框点击
Launch按钮,由于AVD第一次启动时间较长,需耐心等待[15]。
开启成功后如图2.2所示:
图2.2AVD界面图
2.3本章小结
本章是对Android应用开发所需的开发环境进行简单的介绍和对开发环境如何搭建进行介绍。
3系统的需求分析和概要设计
这章主要讲述了系统的需求分析,简单的描述了各个功能模块和游戏的基本规则,然后是对系统概要设计的介绍。
3.1系统需求分析
3.1.1系统功能需求分析
系统主要实现以下的几个功能:
关卡选择、呈现游戏界面、重新开始游戏、当前分数和最高分数、游戏帮助等功能。
关卡选择是当玩家点击此按钮时,游戏就会从主界面跳转到关卡选择界面,当玩家选择相应的关卡时,先判断此关卡是否开启,如果没有开启此关卡就会弹出对话框提示玩家此关卡未开启,如果此关卡已经开启就会跳转到主界面同时开始此关卡。
重新开始游戏是当玩家无法满足当前进度时点击此按钮就会重新开始游戏,如果玩家处于不同关卡时重新开始游戏还是停留在此关卡。
游戏帮助是当新手玩此游戏时无法知道游戏玩法时给予相应的提示。
呈现游戏界面是游戏开始时主界面在游戏区域会生成4×
4的矩阵同时在矩阵里面随机生成两个2或4的卡片。
当前分数和最高分数是显示此局玩家所获得的分数和历史最高的分数,如果当前的分数超过最高分数那么最高分显示当前的分数,如图
3.1所示。
图3.1系统功能图
3.1.2游戏基本规则
在开始游戏后玩家通过滑动屏幕来操控卡片的移动方向,当卡片滑动中如果有两张卡片相同且他们的中间也没有其他卡片时,在滑动的过程中这两张卡片会合并,显示为这两张卡片之和。
在滑动之中有三张卡片相同时只会合并向滑动方向两张卡片。
在滑动中如果有两张卡片一样同时又有一张卡片的值跟这两张卡片相加的值时,滑动只会使那两张相同的卡片合并而不会接着让合并后的卡片和另一张卡片合并。
3.2系统概要设计
3.2.1系统流程的设计
游戏开始进入开始页面,能够进入游戏的主界面并开始普通开局,从主界面能够重新开始游戏、查看帮助和进入关卡选择界面。
当玩家点击重新开始按钮会弹出相应的对话框让玩家选择,如果玩家选择“是”时则重新开始游戏,如果选择“否”则返回游戏界面不做任何处理。
当玩家点击关卡按钮会跳转到关卡选择界面,关卡界面将显示所有的关卡,当玩家点击相应的关卡时后台会判断此关卡是否开启,如果已经开启将会跳转到主界面并运行此关卡,如果没有开启将给予玩家提示“此关卡未开启”对话框。
在开始界面按返回按钮时则会退出游戏。
游戏的流程图如图3.2所示:
图3.2系统流程图
3.2.2系统模块设计
从总体出发,将该系统划分为三大模块:
“菜单设计”,“界面设计”和
“算法设计”。
3.2.2.1菜单设计
游戏帮助
关卡选择
重新开始
菜单的实现是在游戏界面实现,可进一步划分为三个模块,分别是:
“游戏帮助”,“重新开始”,“关卡选择”,如图3.3所示:
图3.3菜单设计
3.2.2.2界面设计
可进一步划分为:
“主界面设计”,“游戏界面设计”和“关卡界面设计”
,如图3.4所示:
开始游戏
分数
游戏区域
重新
关卡
帮助
(a)开始界面 (b)游戏界面 (c)关卡选择界面
图3.4界面设计
3.2.2.3算法设计
(1)当有两张卡片相同时,向它们可以碰撞的方向滑屏,卡片会移动到最底边并生成其两倍数字的卡片,并且生成一个“2”或“4”的卡片,如图3.5所示:
图3.5简单卡片合成
(2)当有两张卡片相同时,且在他相同的方向有张跟它们之和的卡片,向它们可以碰撞的方向滑屏,相同的卡片会移动到无法移动的位置并生成期两倍数字的卡片,但合成的卡片不会跟那张两倍数字的卡片合并,并且生成一个“2”或“4”的卡片,如图3.6所示:
图3.6复杂卡片合成
(3)当界面上没有空位并且两两相邻的卡片不相同时游戏结束。
如图3.7
所示:
图3.7游戏结束
3.3本章小结
本章主要对游戏所实现的功能进行需求分析,对图形和系统性能进行了分析,分析了图形的特点和实现的可行性。
对系统的性能进行了详细的分析同时也提出来解决性能问题的解决方案。
对系统的流程,系统所需的图形文件,系统的总体架构和系统用例进行了设计。
通过本章的分析、设计能更加具体的了解系统功能,对系统所要实现的功能和图形文件有了更深的认识。
为下一章系统功能的具体实现提供了可靠的参考依据。
4系统实现
本章主要是详细介绍每个功能是怎样的实现。
4.1开始界面的实现
游戏的主界面是按钮图片,只是实现了界面的跳转,当玩家点击此界面时就会调用ZuomianActivity.java此函数让页面跳转到游戏界面开始游戏,如图4.1所示:
publicclassZuomianActivityextendsActivity{
protectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main0);
}
图4.1开始界面
4.2游戏界面的实现
游戏界面主要是在activity_main.xml中当前分数、最高分数、游戏区域、重新开始按钮、关卡选择按钮、帮助按钮,当跳转到游戏界面时就会调用并执行MainActivity.java函数来展示游戏界面,如图4.2所示。
setContentView(R.layout.activity_main);
图4.2主界面
4.3游戏滑屏卡片移动的实现
当玩家滑动屏幕时,主要是通过initGameView函数来监听玩家手指滑动的位置,先通过获取开始坐标和结束坐标,然后通过比较结束坐标跟开始坐标的差值来判断玩家是怎样滑动屏幕的。
判断出玩家的滑动轨迹后,通过调用swipe
Left、swipeRight、swipeUp、swipeDown方法来实现卡片的移动,如图4.3所示。
publicvoidinitGameView(){setColumnCount(4);
setOnTouchListener(newOnTouchListener(){privatefloatstartX,startY,offsetX,offsetY;
publicbooleanonTouch(Viewv,MotionEventevent){switch(event.getAction()){
caseMotionEvent.ACTION_DOWN:
startX=event.getX();
startY=event.getY();
break;
caseMotionEvent.ACTION_UP:
offsetX=event.getX()-startX;
offsetY=event.getY()-startY;
if(Math.abs(offsetX)>
Math.abs(offsetY)){if(offsetX<
-5){
swipeLeft();
}elseif(offsetX>
5){swipeRight();
}else{
if(offsetY<
-5){swipeUp();
}elseif(offsetY>
5){swipeDown();
break;
returntrue;
});
privatevoidswipeLeft(){booleanmerge=false;
for(inty=0;
y<
4;
y++){
for(intx=0;
x<
x++){
for(intx1=x+1;
x1<
x1++){
if(cardsMap[x1][y].getNum()>
0){
if(cardsMap[x][y].getNum()<
=0){cardsMap[x][y].setNum(cardsMap[x1][y].getNum());
cardsMap[x1][y].setNum(0);
x--;
merge=true;
}elseif(cardsMap[x][y].equals(cardsMap[x1][y])){
cardsMap[x][y].setNum(cardsMap[x][y].getNum()*2);
MainActivity.getMainActivity().addScore(
cardsMap[x][y].getNum());
merge=true;
if(merge){
addRandomNum();
checkComplete();
privatevoidswipeRight(){booleanmerge=false;
for(intx=3;
x>
=0;
x--){
for(intx1=x-1;
x1>
x1--){
x++;
checkCompl