基于安卓平台记忆大爆炸游戏设计与实现毕业论文设计.docx
《基于安卓平台记忆大爆炸游戏设计与实现毕业论文设计.docx》由会员分享,可在线阅读,更多相关《基于安卓平台记忆大爆炸游戏设计与实现毕业论文设计.docx(30页珍藏版)》请在冰点文库上搜索。
基于安卓平台记忆大爆炸游戏设计与实现毕业论文设计
基于安卓平台记忆大爆炸游戏设计与实现_毕业论文(设计)
本科毕业论文设计
题目基于安卓平台记忆大爆炸游戏设计与实现
院系电子工程与电气自动化学院
专业电子科学与技术
完成日期7>2013年5月10日
巢湖学院本科毕业论文论文Web网站并处理各种各样的业务因此智能手机的应用开发在21世纪移动互联时代就显得尤为重要
此论文提出了一款基于安卓系统的记忆大爆炸游戏并通过解析这款游戏的开发和实现来了解安卓系统的工作机制
此种游戏为益智类游戏其主要内容有欢迎界面菜单选择游戏设置开始游戏游戏教程游戏退出等模块并设计各个模块的功能和实现方式降低模块与模块的内聚
主要对该游戏进行总体的分析和设计对内部算法的具体处理和详细的计算进行阐述运用多线程技术对游戏中用到的安卓动画过程做具体介绍
关键字安卓游戏动画
DesignandimplementationofmemeorygameofthebigbangbasedontheAndroidplatform
Abstract
AlongwiththerapidpopularityofsmartphonesinordertomakesmartphoneuserscanquerytheservicesprovidedbytheInternetanytimeandanywhereahighlyefficientwayistothefunctionoftheapplicationsystemdevelopmentonthehandsetkeepthecellphonecanbemobileandInternetaccesstotheWebsiteanddealwithallkindsofbusinessSosmartphoneapplicationdevelopmentinthe21stcenturyeraofmobileInternetisparticularlyimportant
Thispaperputsforwardabasedonandroidmemorygametothebigbangandthroughanalyzingthedevelopmentandimplementationofthegametounderstandtheworkingmechanismoftheandroidsystem
Thisgameforeducationalclassesitsmaincontentis"welcomescreen""menuselection""gameSettings""startgame""gametutorial""exitgame"andothermodulesanddesignthevariousmodulesfunctionandimplementationapproachReducethemoduleandmodulecohesion
MainlytotheoverallanalysisanddesignofthegamethespecificprocessingofinternalalgorithmandthedetailedcalculationUsingthemultithreadingtechnologytouseandroidinthegameanimationprocesstointroducespecific
KeyWords
基于android平台的记忆大爆炸游戏设计与实现I
摘要I
1绪论1
11研究意义1
12研究状况与发展趋势1
2Android开发前的准备2
21系统需求分析2
22对性能的规定3
23android开发环境3
3游戏界面设计4
31欢迎界面设计4
32菜单界面设计4
33游戏进行中界面设计5
4游戏实现6
41框架的搭建6
42欢迎界面实现8
43菜单界面实现9
com菜单主界面9
com游戏帮助界面11
com游戏关于界面12
com游戏设置界面12
com游戏成就界面13
com游戏退出15
44游戏进行中界面实现15
com游戏主界面15
com游戏过关界面19
com游戏失败界面21
com游戏暂停界面21
45加载界面实现22
5软件运行测试24
51测试环境24
52功能测试24
53兼容性测试25
6总结25
参考文献27
致谢28
绪论
Android平台的框架是由操作系统中间件用户界面和应用软件组成底层的基础为Linux内核android系统的效果图由C开发并且只提供基本功能最上层为应用软件层包括通讯软件程序等是由各公司用java开发Google通过与各软硬件开发商等建立合作伙伴的关系希望能建立标准的开放式的移动软件平台
11研究意义
手机的发展也带动了手机游戏产业的快速发展在人们的生活中有许多的游戏但不同的游戏会带给玩家不同的感受和生活理念游戏时人们日常生活的一个必不可少的娱乐项目同时也带动了游戏相关产业市场的发展游戏平台经过从游戏机到电视游戏然后到PC游戏再到手机游戏中间经历了很多技术的更新和变革因为智能手机的普及基于手机平台的游戏也就拥有了巨大的市场空间也因随着3G的开通和应用手机游戏必然会迎来新的一轮游戏热潮
Android系统平台作为当下最为火热的平台本文拟设计一款游戏以深入理解Android系统的工作机制
Java语言作为一种跨平台的语言可用于开发android应用通过本文亦希望能够进一步的理解掌握该语言
此游戏是一款益智类的游戏通过它深入理解游戏开发的过程以及游戏开发的架构搭建理解安卓图形动画音频等的实现理解游戏开发思路和实现技术
12研究状况与发展趋势
1997年出现了最早的手机游戏经过了十几年的发展和变革随着手机移动终端和移动通信网络的不断进步手机游戏正在经历由简单到复杂的演变过程带动移动数据业务快速发展的手机娱乐服务伴随着网络和移动终端性能的不断提高呈现出快速增长势头[2]2010年中国的手机游戏玩家规模已经突破了13亿同比增长5211同期的中国手机游戏的市场规模已达33亿2011年中国的手机游戏玩家规模已达162亿人伴随着智能手机的普及和游戏获取门槛的降低以及手机游戏在产品类型和用户体验上都有很大的提高未来中国手机游戏玩家的规模还有很大的上升空间
2012年中国手机游戏玩家的规模已达213亿中国手机的网络游戏市场规模已达442亿元随着手机宽带的不断提速互联网从PC过渡到手机的趋势正在加快蔓延这也为手机游戏业的兴起造就了新的商业机遇
在移动互联网时代开发者纷纷逃离营运商的束缚转向利润较为丰厚的应用程序和游戏开发手机游戏软件在消费者中深受欢迎如果想在未来手机应用程序开发中实现规模则需要加大手机游戏方面的开发力度手机游戏研发的重点是游戏情节和游戏界面游戏情节的创作依赖人的想象力和创造力行业竞争的激烈也导致雷同的不少游戏情节出现这就要求创作人员不断发挥才能从最初按键操纵到后来的屏幕多点触控已是一个趋势本文则是在多点触碰操作灵感下的一款小游戏设计
目前的android手机游戏可以大致分为经营策略动作竞技休闲益智网络模拟体育竞技射击冒险和角色扮演
Android开发前的准备
21系统需求分析
在android智能手机平台上实现记忆大爆炸益智游戏玩家的目的是要记住礼物摆放的先后顺序再根据记忆根据原来的顺序依次点击屏幕上的方块以找到礼物从而获取分数在连击时间槽耗尽之前找到所有礼物将形成连击达成特定条件可以解锁成就如果点击顺序错误减少生命点数当生命为零时游戏结束用以锻炼人的记忆能力
实现各个目标的具体需求
1游戏框架设计
2刚进入游戏时的欢迎界面设计与实现
3菜单主界面的设计与实现
4将菜单封装成一个对象对菜单类的设计与实现
5对一些通用界面通用的功能进行统一处理的工具类的设计与实现
6游戏进行时界面的设计与实现
7将物品封装成一个对象对物品类的设计与实现
8对游戏中用到的状态机进行设计与实现
9数据存储数据库类的设计与实现
22对性能的规定
在对游戏各个界面的设计过程中始终坚持清晰了然
由于是运行在手机上面而不是电脑上面所以对游戏的性能要求就更加严格内存的使用要尽量的低很多游戏在一开始进入游戏后就将所有的资源加载到游戏中这样在后面的游戏过程中就不需要加载而直接从内存中读取数据但这样有些资源用不到的情况下也被加载到内存中对手机内存的要求较高而本游戏通过只加载需要的资源部分来降低手机内存的使用这样就需要加载界面来加载需要的资源而没用到的资源则不加载
如果采用android系统的绘图方式会发现绘制的图片在移动时会发生晃动的情况虽然可以通过提高帧率的方式来减缓晃动的幅度但不能从根本问题上解决因为android的绘图是先将图片绘制到画布上再一同绘制到屏幕上所以为了解决由于移动而带来的晃动问题我通过旋转画布的方式在原坐标系下可能沿着任意的方向移动在新坐标系下则始终沿着坐标轴方向运动就不会出现晃动问题而内存的开销方面相比之前并没有过多的开销
23android开发环境
Android的上层应用程序是用Java语言开发同时还需要基于Dalvik虚拟机所以要用的是开源的eclipse集成工具和安全的java语言当然只有Eclipse还不够因为是使用Java语言进行开发还应该有由SUN公司提供的JavaJDKjava开发所需要的开发工具包此外Android的应用程序开发和Java开发有较大区别的所以还需要有Google提供的AndroidSDKAndroid平台开发所需要的开发工具包同时还需要在Eclipse安装ADT插件为Android开发提供开发工具的升级或者变更是Eclipse下开发工具的升级下载的工具
简言之需要以下软件才能搭建Android开发环境从而进行Android游戏的开发
1JavaJDK
2Eclipse
3AndroidSDK
4ADT插件
游戏界面设计
31欢迎界面设计
欢迎界面是对用户初进入游戏的友好界面和游戏信息设置界面设计如下
图31欢迎界面设计框架
32菜单界面设计
菜单界面是对一些常用功能的一种集成能引导用户更好地游戏提高用户的体验度包括
1开始游戏点击跳转到游戏界面开始游戏
2游戏帮助简单介绍一下此游戏的一些基本功能和玩法
3游戏关于对于本游戏的一些信息介绍
4游戏设置玩家可以选择是否打开背景音乐
5游戏成就在游戏过程中所获得的奖励
6退出点击退出游戏菜单界面设计具体如下
图32菜单界面设计框架
33游戏进行中界面设计
为了更好地吸引用户提高用户的体验度合理的设置游戏的难度和情节是有必要的在游戏的过程中适当的添加奖励机制和惩罚机制过关时根据用户的操作连击点数来判断其是否可获得分数和成就如果未能完成任务则生命将会减少界面设计如下
图33游戏中界面设计框架
游戏实现
41框架的搭建
在编写游戏代码之前必须要仔细的理顺思路清晰的构建出整个游戏的框架不然游戏开发到最后总是千头万绪一旦出现bug就不知道该如何修改
1借鉴MVC架构思想将游戏分成四层将视图即界面展示逻辑画面的移动数据保存和统一工具类分开来开发这样如果视图出问题了即界面绘制的位置有问题只需要更改视图层而不需要更改逻辑层和数据库层每一个界面类中都有paint绘图方法和run逻辑处理方法将视图和逻辑分开以便于维护和修改使得代码的可维护性和二次开发容易度提高
2游戏状态机的实现方式是通过变量来控制当前游戏状态在游戏主线程中只更新绘制当前游戏状态下的内容各界面的跳转是通过状态机来进行的例如
switchGSgameStatus
caseGSGAME_INTO游戏
paintGameIntogp
break
caseGSGAME_SUC过关
paintGameSucgp
break
caseGSGAME_ERR失败
paintGameERRgp
break
caseGSGAME_PAUSE暂停
GSgameStatus来切换不同的界面而其他状态下的逻辑将不执行界面将不绘制通过状态机能够很方便的改变界面使得代码也比较清晰可读性较高
3保存数据在游戏中需要长期的存储一些游戏生成的数据例如玩家对游戏背景音乐的开关设置游戏过程中所获得的成就和分数剩余生命值所使用的特定功能次数等都需要保存首先创建一个类MyHelper在此类中声明数据库的基本信息再通过DB类建立更新和打开数据库对数据库进行增删改查等操作
4工具类的目的是将一些常用的方法封装在一个类中这些方法不依赖于任何界面并能在各个界面通用
①GS类将各个界面所用到的状态变量进行统一管理
②PS类系统配置参数管理包括系统配置固定参数字体声音图片和数据库
③GameData类游戏中的一些数据管理包括点阵字渐变效果和文本性文字单色等
④LayerData类对于每关的关卡数据进行管理当前所在的关卡总关卡该关分数总分数和当前关的成就等
⑤UIB类模拟android按钮检测矩形碰撞看手指是否点击了该按钮
StrData类各界面中用到的字符串
⑥Sound类背景音乐和音效的管理
音乐的播放音乐停止以及对于音乐资源的加载和释放
com框架
com框架
com层框架
com框架
42欢迎界面实现
画面的动态切换当第一张图片显示的时间达到定值时通过更改状态机来切换下一张图片的显示
switchlogoStatus
caseLOGO_PIC
iflogoTimeo0
logoTimeoTgetTimec
elseifTgetTimec-logoTimeologoDelay
logoTimeoTgetTimec
logoNumc
iflogoNumclogoNumo
logoNumc0
setLogoStatusLOGO_SOUND
caseLOGO_SOUND
break
43菜单界面实现
当用户进入此界面时根据用户的需要来查看不同的功能帮助用户了解游戏的操作
com菜单主界面
com菜单主界面
1将图中的各个菜单封装成对象为Menu此对象拥有的属性有
绘制时的xy坐标
所代表的图片下标bitmapIndex
所代表的的菜单下标menuIndex
动画移动实现控制isMoveUp
2菜单动画逻辑处理
控制菜单上下移动通过控制菜单对象中的y坐标和动画控制属性在线程中不停的刷新来控制其上下摆动
控制菜单上下移动
fori0imoveMenuArrayXlengthi
ifmoveMenuArrayX[i]getYmenuDefaultY5
moveMenuArrayX[i]setMoveUpfalse
elseifmoveMenuArrayX[i]getYmenuDefaultY-5
moveMenuArrayX[i]setMoveUptrue
ifmoveMenuArrayX[i]isMoveUp
moveMenuArrayX[i]setYmoveMenuArrayX[i]getY1
else
moveMenuArrayX[i]setYmoveMenuArrayX[i]getY-1
控制菜单左右移动当点击图中向左向右方向时菜单相应的平滑的向左向右移动
控制菜单向左移动
ifisMoveLeft
ifmenuDx-150clickLeftNum
menuDx-10
curMenuDY_n-3
curMenuDY_c3
arrowDx-25
fori0imoveMenuArrayXlengthi
ifmoveMenuArrayX[i]getX-20
moveMenuArrayX[i]setXSharecomInArraymoveMenuArrayX150
moveMenuArrayX[i]setXmoveMenuArrayX[i]getX-10
else
InitMoveLeft
控制菜单向右移动
ifisMoveRight
ifmenuDx150clickRightNum
menuDx10
curMenuDY_n-3
curMenuDY_c3
arrowDx25
fori0imoveMenuArrayXlengthi
ifmoveMenuArrayX[i]getXw_fixed50
moveMenuArrayX[i]setXSharecomInArraymoveMenuArrayX-150
moveMenuArrayX[i]setXmoveMenuArrayX[i]getX10
else
InitMoveRight
com游戏帮助界面
com游戏帮助界面
当用户不知如何玩此游戏时可通过该帮助界面了解到此游戏的玩法和规则点击帮助菜单将会提示我们应该如何进行操作
文字滚动动画逻辑处理使用Android系统的截图方法固然可以解决滚动动画但直接使用系统级的方法总是那样的繁琐自定义一个类工具类ToolPic里面封装一个方法paintRegionImage方法用于处理图片的截取和显示
PublicvoidpaintRegionImageCanvasgPaintpBitmapbintsrcxintsrcyintsrcwintsrchintabsxintabsyintanchor
gsave
srcsetsrcxsrcysrcxsrcwsrcysrch
switchanchor
caseANCHOR_CHV中心点绘制
dstsetabsx-srcw2absy-srch2absxsrcw2absysrch2
break
caseANCHOR_LU左上角绘制
dstsetabsxabsyabsxsrcwabsysrch
break
其他
gdrawBitmapbsrcdstp
grestore
帮助文字从下往上滚动逻辑实现通过控制截取的起始坐标来实现滚动
publicvoidrunHelp
helpTextStartY
ifhelpTextStartY581
helpTextStartY-305
com游戏关于界面
com游戏关于界面
关于界面是对游戏的一些基本信息做一个简要说明
com游戏设置界面
com游戏设置界面
设置界面对于游戏的背景声音进行设置
com游戏成就界面
com游戏成就界面
当在游戏中连击数达到一定时就能获得奖励成就
成就界面翻页动画的实现翻书的效果可以看成是由一定的动作帧组成每帧的大小相同这些帧在线程中不断地刷新就能形成连续的画面PageTurningIndex记录翻页的哪一帧总共有6帧
privatevoidrunAchieve
向左翻页或向右翻页逻辑处理
ifisPageMoveLeftisPageMoveRight
pageTurningIndex
ifpageTurningIndex6
pageTurningIndex-1
isPageMoveLeftfalse
isPageMoveRightfalse
翻页绘制实现
绘制翻页动画isTransform是否将图片变为镜像图片
privatevoidpaintTurningPageCanvasgPaintpbooleanisTransform
switchpageTurningIndex
case0
paintPagegpPicimageSrcs36677349TANCHOR_CHVisTransform
break
case1
paintPagegpPicimageSrcs37656328TANCHOR_CHVisTransform
break
case2
paintPagegpPicimageSrcs38636305TANCHOR_CHVisTransform
break
case3
paintPagegpPicimageSrcs39w_fixed3410h_fixed2-40TANCHOR_CHVisTransform
break
case4
paintPagegpPicimageSrcs40w_fixed34-PicimageSrcs40getWidth2h_fixed2-50TANCHOR_CHVisTransform
break
case5
paintPagegpPicimageSrcs41w_fixed2-PicimageSrcs41getWidth220h_fixed2-10TANCHOR_CHVisTransform
break
绘制页面翻转动画
privatevoidpaintPageCanvasgPaintpBitmapbintxintyintanchorbooleanisMirrorTrans
ifisMirrorTrans
通过统一工具类ToolPic类来绘制
comtImagegpbw_fixed-xyanchorTTRANS_MIRROR
else
comtImagegpbxyanchor
com游戏退出
com游戏退出界面
当用户需要退出游戏时通过此界面退出可以将该游戏所占用的资源全部释放掉
privatevoiddisData
暂做释放处理
MuAuPlcomAData
PicsystemAnull
PicclearSrcs
comroyDraw