基于Android系统的打气球游戏的设.docx
《基于Android系统的打气球游戏的设.docx》由会员分享,可在线阅读,更多相关《基于Android系统的打气球游戏的设.docx(53页珍藏版)》请在冰豆网上搜索。
基于Android系统的打气球游戏的设
毕业设计说明书
基于Android系统的打气球游戏的设计与实现
张越
计算机与科学技术学院
0806034137
学生姓名:
学号:
计算机科学与技术
学院:
于一
专业:
指导教师:
2012年16月
基于Android系统的打气球游戏的设计与实现
摘要
随着智能手机一步步走进普通人的生活,它将成为人们获取信息的主要设备。
因此,手机的娱乐应用服务将会有很大的发展空间,游戏也是其中之一[3]。
本系统主要是实现基于Android的打气球,打气球是一款来自红白机时期就非常盛行的游戏,其设计目的是训练人的应变能力。
打气球这是一款简单的射击类游戏,通过主菜单界面选择进入不同模式进行游戏。
游戏中有几种不同颜色的气球通过按屏幕发射弓箭射击气球,射击不同颜色的气球会得到不同的分数,当时间达到一定的时候会根据所得分数判断输赢,从而进入胜利或失败界面。
设计制作射气球游戏的目的在于主要实现一套Android游戏开发的解决方案,解决目前在Android游戏开发中所面临的几大问题。
主要有游戏的关卡切换,游戏地图数据结构的实现、应用多种手机内置传感器进行游戏控制、游戏动画的实现、基于图形的碰撞检测、数据在手机系统和实现。
解决这些在Android游戏开发中所共同面临的问题,对于Android游戏开发效率与Android游戏的质量有着极大的帮助作用。
随着计算机游戏的发展,很多编程爱好者基于该游戏的思想开发出了各种版本、各种类型的飞机游戏。
这其中也包括很多手机版本的实现,伴随着AndroidSDK技术的不断发展,一些基于Android应用也不断推陈出新,很快推飞机大战便进入了千家万户。
此Android飞机大战是基于AndroidSDK4.0基础上设计的,主要分为游戏开场动画模块、游戏操作模块、道具制造模块、分数统计模块四个功能模块的设计与实现。
本文首先论述了android系统的背景和研究现状,接着简要的介绍了android的技术及对android分析,并且介绍了android应用程序的结构。
在程序开发中,采用了先设计好游戏的类框架后
DesignandimplementationoftheAcegamebasedonAndroid
Summary
Assmartphonesstepintothelivesofordinarypeople,itwillbecometheprimarydeviceforpeopletoobtaininformation.Therefore,mobileentertainmentapplicationswillhavemuchroomfordevelopment,thegameisoneofthem.ThesystemisAndroid-basedace,aircraftfromWorldWarIIisaveryprevalentduringtheNESgame,whichisdesignedtotrainpeople'sresilience.Thisisaclassicaircraftflightshootinggame,beautifulbrilliantpicture,theoverallenvironmentismainlyaroundthespace-based,high-fidelitysound,theplayerspresentedadifferentshootingexperience.Simpletouch-screenoperation,touchandholdtherandomoneplace,movearound,willautomaticallyattackenemies,evadeenemiescanmoveupanddown.Playersinthegamehavetodoisdrivethelatestfighters,launchedtheattackstotheenemyheadquarters.Thisrequiresplayerstocleveruseoflimitedspaceandaccess,reasonablearrangementsfortheaircraft'spositionwaslikelytocompletethetask.Withthedevelopmentofcomputergames,alotofprogrammingenthusiastsbasedontheideaofthegamedevelopedvariousversions,alltypesofaircraftgame.Thisincludesalotofphoneversionoftheachievement,alongwiththecontinuousdevelopmentofAndroidSDKtechnology,anumberofAndroid-basedapplicationshavecontinuedtoemerge,andsoonWorldWarIIaircraftwillbepushedintomillionsofhouseholds.ThisistheAndroidSDK4.0Androidaircraftonthebasisofthedesignbasedontheinitialinterfaceisdividedintothegame,soundmodules,gamemodules,modulemanufacturingaircraftshellsoffourmodulesdesignandrealization.
Thispaperfirstdiscussesthebackgroundandstatusofandroidsystem,andthenabriefintroductiontothetechnologyandanalysisforandroidandroid,anddescribesthestructureofandroidapplications.Inprogramdevelopment,designingagoodgamewithafirstclassframe,andthenrealizethefunctionofeachclasswillberealizedinaccordancewiththecodeandwrite.
Keywords:
androidgames,androidaircraftace,smartphones
目录
1引言1
1.1系统简介1
1.2Android游戏的研究现状1
1.3关于飞机大战游戏设计2
1.3.1基本思想2
1.3.2基本结构3
1.3.3适用条件3
2开发环境及相关技术4
2.1开发环境4
2.2相关技术与工具4
2.2.1Eclipse4
2.2.2JDK4
2.2.3ADT4
2.2.4碰撞检测技术5
2.2.5SurfaceView5
3需求分析6
3.1系统功能需求6
3.1.1业务需求分析7
3.1.2用户需求分析7
3.1.2功能需求分析7
3.2功能划分概图9
4概要设计10
4.1总体设计10
4.1.1系统流程10
4.1.2系统详细结构11
4.2模块设计概述12
4.2.1开场动画模块12
4.2.2道具制造模块12
4.2.3游戏操作模块13
4.2.4分数统计模块13
4.3数据结构及接口定义14
5详细设计20
5.1开场动画模块20
5.1.1问题描述20
5.1.2问题分析20
5.1.3实现方法21
5.2道具制造模块24
5.2.1问题描述24
5.2.2问题分析24
5.2.3实现方法24
5.3游戏操作模块28
5.3.1问题描述28
5.3.2问题分析28
5.3.3实现方法28
5.3分数统计模块35
5.3.1问题描述35
5.3.2问题分析35
5.3.3实现方法35
6系统测试37
6.1软件测试的原则37
6.2测试的方法37
6.3本系统的测试38
6.3.1测试用例的设计38
6.3.2测试用例总结43
7结论44
参考文献45
致谢46
1引言
1.1系统简介
随着社会的发展,人们的工作压力与日俱增。
与此同时相应的减压放松的方式也慢慢发生了变化。
人们更趋于在家或者工作闲余时间以电子游戏的方式达到娱乐的目的。
一次,也就意味着,电子游戏的利润空间和发展空间是十分宽广的[3]。
飞机大战是一款来自红白机时期就非常盛行的游戏,其设计目的是训练人的应变能力。
飞机大战这是一款经典飞行射击类游戏,精美绚丽的画面,整体环境主要还是围绕太空为主,高保真的音效,为玩家呈现一场不一样射击体验。
简单的触屏操作,触屏按住随意一个地方,左右移动,便可自动攻击敌人,上下移动亦可躲避强敌。
玩家在游戏中要做的就是驾驶着最新战机,向敌人的总部发起了冲击。
本游戏利用Android开发语言,完成一个基于Android的飞行战斗类游戏开发。
在该游戏中,加入对应的游戏策略模型,游戏声音,开场动画,计分分,关卡选择,等功能。
创建友好的UI界面,较强的游戏可玩性,操作的友好性。
并利用游戏设计原则,提高游戏的智能,增强游戏的吸引力[3]。
1.2Android游戏的研究现状
Android一词本意是指"机器人",同时也指Google于2007年11月5日推出的开源手机操作系统。
Android基于Linux平台,由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。
它是由一个由 30 多家科技公司和手机公司组成的开放手机联盟共同研发,将大大降低新型手机设备的研发成本,完全整合的全移动功能性产品成为"开放手机联盟"的最终目标[5]。
自2007年Google发布Android系统1.0之后,各大手机生产厂商纷纷将目光投向了最具发展潜力的Android系统,并陆续推出了各种品牌的搭载Android系统的智能手机[15]。
时隔四年,Android手机在手机市场中占的市场份额正以非常迅猛的速度上升:
2010年市场份额:
Symbian36.6%、Android25.5%、iPhone16.7、windowsMobile2.8%、linux2.1%。
Nokia的Symbian系统在Android系统的冲击下,正在从手机市场中的王者慢慢被挤下来。
在未来的几年内,Android手机必定会占据手机市场的主要份额,所以在这种形式下,Android应用的前景也必定是前景一片大好。
现如今Android的市场份额占总体智能手机市场份额的50%以上,相对于前几年来说,其发展势头势不可挡。
以至于越来越多的开发商加入了Android应用开发的行列[7]。
在2010年,Android市场份额仅占4.7%左右,并其市场只有不到20000个应用程序。
但在2011年初,这个数字就已经超过了25万字大关。
而随着越来越多的应用的诞生,由于其的多元化和普遍性越来越高,其发展趋势已开始渐渐逼近世界智能手机龙头苹果公司推出的ios系统。
而在多个Android的应用程序排行榜中,无论是按照使用量或者人气,或者收入,70%以上的应用排行榜榜首都是游戏。
可见,Android游戏应用已渐渐深入人心。
Android手机游戏应用开发已渐渐占据市场主流[12]。
现如今,电子游戏已慢慢渗透进人们生活中,并在扮演着越来越重的角色。
可以说,随着它的迅猛发展,现今的电子游戏已经不仅仅是一种娱乐,而是形成了一种文化现象。
随着社会的发展,人们的工作压力与日俱增。
与此同时相应的减压放松的方式也慢慢发生了变化[7]。
人们更趋于在家或者工作闲余时间以电子游戏的方式达到娱乐的目的。
一次,也就意味着,电子游戏的利润空间和发展空间是十分宽广的。
而作为现代人不可或缺,随身携带的手机设备,则作为一类游戏的载体,有着广泛的发展空间。
而Android作为主流智能手机系统之一,研究和开发相应应用游戏是时代发展的趋势[13]。
1.3关于飞机大战游戏设计
1.3.1基本思想
飞机大战这是一款经典飞行射击类游戏,精美绚丽的画面,整体环境主要还是围绕太空为主,高保真的音效,为玩家呈现一场不一样射击体验。
简单的触屏操作,触屏按住随意一个地方,左右移动,便可自动攻击敌人,上下移动亦可躲避强敌。
玩家在游戏中要做的就是驾驶着最新战机,向敌人的总部发起了冲击。
这就要求玩家巧妙的运用有限的空间和通道,合理的安排飞机的位置才可能完成任务。
1.3.2基本结构
本游戏开发设计共分为游戏开场动画、声音模块、游戏进行模块、道具制造模块、分数统计模块五个模块进行设计开发。
通过对Base界面类的继承实现了游戏开场动画以及游戏资源文件的加载,当获取用户点击(单指)游戏开始时,游戏进入主界面,此时通过工厂类生产出飞机以及敌机,用户开始控制飞机进行游戏。
该设计充分运用java面向对象的原理将所有的飞机建立不同的类用以实现。
并且根据玩家的进度适当的出现道具,或是增强玩家飞机的子弹能力,或是赠予玩家刷屏炸弹,并实时对玩家计分。
当玩家驾驶飞机死亡后,将出现游戏统计界面,对玩家的信息进行统计。
以此鼓励玩家
1.3.3适用条件
本次游戏设计可以在Android4.0版本以上的手机运行,能自适应Android手机的各种分辨率。
创建友好的UI界面,较强的游戏可玩性,操作的友好性。
并利用游戏设计原则,提高游戏的智能,增强游戏的吸引力。
由于游戏设计之处考虑过使用cocos2d,但由于相关文档的困乏,并未采用。
因此软件运行不如带引擎的游戏运行的流畅,并可能出现不跟手的现象,实属正常。
2开发环境及相关技术
2.1开发环境
硬件环境:
IntelCorei32100MHz+4GBRAM
软件环境:
Windows7+Eclipse+JDK+ADT
2.2相关技术与工具
2.2.1Eclipse
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
2.2.2JDK
JDK(JavaDevelopmentKit,Java开发包,Java开发工具)是一个写Java的applet和应用程序的程序开发环境。
它由一个处于操作系统层之上的运行环境还有开发者编译,调试和运行用Java语言写的applet和应用程序所需的工具组成。
JDK(JavaDevelopmentKit)是SunMicrosystems针对Java开发员的产品。
自从Java推出以来,JDK已经成为使用最广泛的JavaSDK(Softwaredevelopmentkit)。
JDK由一个标准类库和一组建立,测试及建立文档的Java实用程序组成。
其核心JavaAPI是一些预定义的类库,开发人员需要用这些类来访问Java语言的功能。
JavaAPI包括一些重要的语言结构以及基本图形,网络和文件I/O。
一般来说,JavaAPI的非I/O部分对于运行Java的所有平台是相同的,而I/O部分则仅在通用Java环境中实现[1]。
2.2.3ADT
即AndroidDevelopmentTools,在Eclipse编译IDE环境中,需安装ADT(AndroidDeveloperTools)Plug-in,这是Android在Eclipse上的开发工具。
目前Android开发所用的开发工具是Eclipse,在Eclipse编译IDE环境中,安装ADT,为Android开发提供开发工具的升级或者变更,简单理解为在Eclipse下开发工具的升级下载工具[2]。
其中还包括SDK(SoftwareDevelopmentKit),一般是一些被软件工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
在Android中,它为开发者提供了库文件以及其它开发所用到的工具。
简单理解为开发工具包集合,是整体开发中所用到的工具包,如果你不用Eclipse作为你的开发工具,你就不需要下载ADT,只下载SDK即可开发。
2.2.4碰撞检测技术
碰撞检测在2D/3D游戏中至关重要,好的碰撞检测要求人物在场景中可以平滑移动,遇到一定高度内的台阶可以自动上去,而过高的台阶则把人挡住,遇到斜率较小的斜坡可以上去,斜率过大则把人挡住,在各种前进方向被挡住的情况下都要尽可能地让人物沿合理的方向滑动而不是被迫停下。
在满足这些要求的同时还要做到足够精确和稳定,防止人物在特殊情况下穿墙而掉出场景[7]。
2.2.5SurfaceView
可以直接从内存或者DMA等硬件接口取得图像数据,是个非常重要的绘图容器。
它的特性是:
可以在主线程之外的线程中向屏幕绘图上。
这样可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。
在游戏开发中多用到SurfaceView,游戏中的背景、人物、动画等等尽量在画布Canvas中画出。
3需求分析
3.1系统功能需求
3.1.1业务需求分析
虽然现在市面上存在着各种各样的游戏版本,可是飞机大战其市场还是相当大的,比如微信飞机大战。
因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强.可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行.对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的,这样的小游戏刚好迎合了他们的需求.
飞机大战游戏基于JAVA平台编写,采用Android技术开发的一款手机游戏。
手机游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。
一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。
因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。
JAVA是基于虚拟机的半解释型编译系统,其执行效率较C++等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。
游戏的结束、开始、动态信息画面作为构成一个程序都是必不可少的重要部分。
良好的用户界面更是吸引用户的硬指标,相关的美术构图和人性化设置也需要有一定的考虑。
3.1.2用户需求分析
用户需求分析指在系统设计之前和设计、开发过程中对用户需求所作的调查与分析,是系统设计、系统完善和系统维护的依据。
一个的好的用户需求分析可以让系统变的更加完善,能贴合玩家的真实需求,从而达到一个游戏与玩家完全契合的水平。
本项目中用户的需求如下图所示:
图3.1用户需求用例图
游戏开发成功后,最终用户为各个年龄段的人群,用户范围相当广泛。
但是用户对软件产品也有一定的要求:
(1)简单易学
时间不管对于谁来说都是宝贵的,用户不会愿意花大量时间去学习使用一款软件。
一款软件如果操作界面不友好,让用户难以上手使用,那就说明这款软件开发得不够成功,从而失去大量的用户。
所以本项目必须拥有良好的交互界面,让用户安装之后就能进行游戏。
(2)运行稳定
一款软件设计得不够好,那么就有可能在运行的时候出现一些不可预料的错误从而造成软件崩溃。
如果用户正在游戏突然软件崩溃了,无疑会让用户感到非常不舒服,有可能就把软件给卸载了,这样也会失去很多用户。
(3)操作简便
用户不是程序员,他们不知道程序的内部逻辑。
所以程序员必须提供给用户便捷的操作接口来供用户操作,灵活便捷的操作性直接影响了一款软件的好坏。
软件是做给用户使用的,所以一切都要站在用户的角度来看问题。
3.1.3功能需求分析
本项目是一个运行在Android手机上的游戏,玩家可以从手机触屏开始游戏,操控游戏,结束游戏;玩家开始游戏后,在手机屏幕上绘制出一架玩家飞机以及多架敌机,玩家飞机可以响应用户的手指,随手指移动,并不断的发出子弹攻击敌机,敌机在屏幕上段随机出现,并沿着垂直线以一定的速度下落至屏幕下端,如果敌机碰上玩家飞机,那么游戏结束。
同时生产一个太空幕布不断的下移。
当玩家飞机的子弹碰上敌机时会根据敌机类型以及被攻击次数来选择是否坠毁,不论是玩家飞机坠毁或者敌机坠毁,都会出现爆炸画面。
当游戏结束后,显示并保存玩家在游戏中所获得的分数。
本Android飞机大战游戏,总体分为以下几个四模块:
(1)开场动画模块
本模块用于用户登陆游戏的设计,该模块具有初始画布功能,初始化声音功能,同时保持屏幕全屏并且屏幕常亮,能绘制飞机的过场动画以及开始游戏和退出游戏按钮,通过Java线程及Android线程知识,能通过不同的按钮点击返回不同的参数用以判断是进入游戏主界面还是退出游戏,如果没有操作的话,则一直停留在此界面,并且不停的播放飞机大战的过场动画,该模块设计精良,界面美观大方,飞机过场动画流畅。
(2)道具制造模块
本模块用于在用户进入游戏主界面时,制造出游戏运行时所需的道具,这些道具包括大型敌机、BOSS子弹、BOSS敌机、中型敌机、导弹物品、玩家飞机的子弹(两种威力)、玩家飞机、小型敌机。
该模块为这些道具初始化了图片资源以及绘图方法,并且定义了每个道具的逻辑属性,以方便游戏操作模块、分数统计模块的调用。
该模块充分运用java面向对象的知识,合理运用了接口的定义,为每个子弹,飞机都设置了基类,以方便日后对程序进行调整。
(3)游戏操作模块
本模块为飞机大战游戏核心模块,进入本模块之后,Surfaceview会描绘出游戏背景幕布,以及玩家飞机,和上方飞来的敌机,本模块要求能监听玩家操作,玩家可以通过触摸屏触点的位置不同来控制飞机。
在玩家飞机出现时飞机连续发子弹,只要飞机出现,就持续发射。
飞机具有多样性供玩家选择,飞机可以升级子弹威力、飞机可以改变子弹类型、还能出现大招即飞机有清屏导弹。
游戏操作模块定义的敌机为上下飞行的,都是统一从屏幕上方飞下来,敌机不具备发射子弹功能,但是当敌机碰撞到玩家飞机后,玩家飞机死亡。
当敌机只要出现在子弹图片范围内,根据子弹威力选择掉血或者爆炸。
在游戏进行中,会出现音效,每次玩家飞机发射子弹是都会出现声音,当飞机爆炸是也会出现相应的音效。
(4)分数统计模块
在游戏进行中时,本模块进行实时的分数统计,根据不同的击落类型给予玩家不同的分数,并在玩家游戏结束时,