基于Android的飞机大战游戏设计与开发本科毕业设计论文.docx
- 文档编号:5251808
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:67
- 大小:4.06MB
基于Android的飞机大战游戏设计与开发本科毕业设计论文.docx
《基于Android的飞机大战游戏设计与开发本科毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于Android的飞机大战游戏设计与开发本科毕业设计论文.docx(67页珍藏版)》请在冰豆网上搜索。
基于Android的飞机大战游戏设计与开发本科毕业设计论文
本科毕业设计
基于Android的飞机大战游戏设计与开发
毕业论文(设计)原创性声明
本人所呈交的毕业论文(设计)是我在导师的指导下进行的研究工作及取得的研究成果。
据我所知,除文中已经注明引用的内容外,本论文(设计)不包含其他个人已经发表或撰写过的研究成果。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中作了明确说明并表示谢意。
作者签名:
日期:
毕业论文(设计)授权使用说明
本论文(设计)作者完全了解**学院有关保留、使用毕业论文(设计)的规定,学校有权保留论文(设计)并向相关部门送交论文(设计)的电子版和纸质版。
有权将论文(设计)用于非赢利目的的少量复制并允许论文(设计)进入学校图书馆被查阅。
学校可以公布论文(设计)的全部或部分内容。
保密的论文(设计)在解密后适用本规定。
作者签名:
指导教师签名:
日期:
日期:
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
3)其它
摘要
相信Android(安卓)已经为人们熟知,经过2011年的洗礼,Android智能手机火速上位,甚至说现在手机系统由IOS和Android平分也不为过。
随着Android智能手机在中国内地的风靡,基于Android平台的应用开发也逐渐成为IT开发的一大热门。
游戏是智能机不可或缺的应用之一,“水果忍者”、“愤怒的小鸟”等Android游戏应用的成功,让人看到手机游戏在Android平台上的巨大发展空间。
基于此,采用Eclipse和AndroidADT作为集成开发平台,开发本Android游戏APP。
本应用为Android飞机大战游戏,主要有6个操作界面分别为开始界面,游戏界面,设置界面,得分界面,Win界面,Lose界面。
玩家可以选择自己进入设置界面对游戏进行设置,或进入的分界面查看自己本次操作是否在前六名等操作。
作为游戏背景音乐的存在是不可或缺的,本应用在不同的操作界面演奏不同的背景音乐,玩家还可以在设置界面设置背景音乐的大小。
由于Android控件Activity的生命周期的特点,本应用会在被点击“EXIT”按钮的Activity中发送一个EXIT的广播,所有的本应用的Activity收到广播后会自动结束,使得本应用能够完全的退出系统。
本应用采用Android的SurfaceView绘制游戏界面,游戏的主界面美观,赏心悦目,以提高玩家对游戏的兴趣。
游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。
关键词:
Android开发;手机游戏;Java;SQLite
Abstract
Androidhasbeenknownforpeople,after2011yearsofbaptism,Androidsmartphonedevelopingfast.Androidoccupiesalargeshareinthemarket.Androidgameapplicationissuccessful,itmakeapersonseethatmobilegamesontheAndroidplatformofthehugedevelopmentspace.Basedonthis,weusingEclipseandAndroidADTasintegrateddevelopmentplatform,todeveloptheAndroidgameapplication.
ThisapplicationforAndroidplanewargamesincludesixoperatinginterface,respectivelyasthestartscreen,thegameinterfaceandsetinterface,Wininterface,Loseinterface.Playerscanchooseinterfacetoplaythegame.Asthemobilephonegamebackgroundmusicisindispensable,theapplicationplaydifferentbackgroundmusicindifferentinterface,playerscanalsosetthesizeofthebackgroundmusicinsettinginterface.
ThisapplicationusingtheAndroidSurfaceViewtodrawgameinterface,gameinterfacepleasingtotheeyebypeopletoplay.Inordertogiveplayersagoodgameenvironment,thecontrolmoduleofgameshouldbesimple,easytooperate.
Keywords:
AndroidPrograming;MobilePhoneGames;JavaPrograming;SQLite
第1章绪论
1.1系统开发背景
随着科技的发展,现在手机的功能已不仅仅是简单的接打电话、收发短信了。
更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。
因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的飞机小游戏。
虽然现在市面上存在着各种各样的游戏版本,可是飞机游戏其市场还是相当大的。
因为它的特殊在于人们在玩游戏的时候的过程中使爱不释手。
随着游戏关卡不断提高,其难度也更大,刺激性也更强。
可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。
对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。
这样的小游戏刚好迎合了他们的需求。
1.2系统研究目的和意义
在如今社会,人们的工作学习压力逐渐增大,生活节奏逐渐加快,大多数人没有足够的时间去休闲娱乐,放松自己。
这款小型的手机游戏,可以让我们随时随地都能享受游戏,从繁重的日常生活中解脱出来。
游戏的主界面应该力求美观,赏心悦目,以提高玩家对游戏的兴趣。
游戏的控制模块应该做到易懂、易操作,以给玩家一个很好的游戏环境。
1.3可行性分析
该系统采用Eclipse集成AndroidADT为开发平台进行APP开发。
Eclipse是一个开放的源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
虽然大都数用户很乐于Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境,这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
基于Eclipse的应用程序的插件开发诸如Siemens公司的PLM产品Teamcenter的插件级开发。
Android专门针对Eclipse开发做了ADT(AndroidDeveloperTools)开发插件,因此该应用使用Eclipse开发完全可行。
第2章系统需求分析
2.1用户功能需求分析
由于本程序简单易操作,交互性好,对用户没什么特别要求。
一般用户经过几分钟练系都可以熟悉本游戏的规则。
图2-1功能界面示例图
图2-2游戏界面示例图
2.2系统性能要求
1.实时性
本应用为手机游戏因此对于用户的操作必须做出立即响应,否则本游戏即为失败。
2.易操作性
单机手机游戏的最大特点即为易操作性,用户在不看说明的情况下也能够玩,并且在玩过几遍之后即熟悉本游戏的规则。
这是本应用对于操作性的要求。
2.3业务流程分析
依据系统的需求分析,得到系统的流程图如图2-3所示:
图2-3系统流程图
第3章系统总体设计
3.1系统功能模块分析
当前应用使用的SurfaceView来绘制的页面因此相对来说大部分逻辑都是由Activity来做处理的。
本系统的功能模块也根据Activity的不同来划分成6个功能模块。
3.1.1系统管理
各个操作界面布局适当,颜色搭配等要美观。
各个Activity之间的切换要快速(PS:
它们各自的背景音乐也要随之切换,给用户以顺畅、自然的感觉)。
用户在任何一个Activity点击“EXIT”按钮或ContextMenu中的“退出”都要成功的将当前应用挂起的多个Acitivity和当前Android虚拟机显示的Activity顺利的停止,并销毁。
3.1.2APP应用设置
设置应用系统背景音乐声音大小和游戏难度。
使用SeekBar来控制系统音量,使用RadioGroup来控制飞机难度。
3.1.3玩家信息管理
在游戏结束时对于玩家的名称和得分进行记录,并在玩家查看排名情况时,以倒序形式显示前六名玩家的得分和姓名等信息。
3.2系统类关系图
系统实体类、边界类、控制类之间的关系如图3-1所示:
图3-1实体类、控制类、边界类之间的关系
各个界面类之间的关系如图3-2所示:
图3-2APP边界类关系
3.3系统总体设计
系统的中只有玩家一种用户,不必向其他的网站或者是教务系统一样进行身份验证等操作。
玩家点击应用图标直接进入应用的开始界面。
用户的操作总体可以归并成如3-3玩家用例图所显示的内容,子弹的用例图如图3-4所示,飞机的用例图如图3-5所示。
用户的操作基本可以划分为“开始游戏”,“设置游戏”,“玩游戏”,“查看分数”,“退出游戏”这五个用例。
图3-3玩家用例图
图3-4子弹用例图
图3-5飞机用例图
第4章系统详细设计
4.1开发工具简介
Android开发工具(ADT)是一个插件的EclipseIDE,目的是给开发人员提供一个强大的、集成的环境中构建Android应用程序。
扩展能力的EclipseADT让你迅速建立新的Android项目,创建一个应用程序的用户界面,添加基于安卓框架的API,调试您的应用程序使用AndroidSDK工具,生成apk文件在使用Eclipse运行Android应用的时候Eclipse会自动的将生成的apk文件自动的注册到Android虚拟机中。
在EclipseADT发展与高度推荐,是一种最快的方式开始。
与引导项目设置它提供,以及工具集成、定制XML编辑器和调试输出窗格,ADT给了你极大的提高在发展中Android应用程序。
使用Eclipse集成AndroidADT做Android应用开发是目前企业中常用的Android应用开发方式。
本项目在开发环境:
●JDK1.7
●Eclipse3.7.0
●AndroidADT4.03
4.2数据库设计
本应用使用的是Android虚拟机做开发,因此使用的为Android虚拟机中自带的数据库SQLite。
本应用只是在针对用户得分及用户姓名等基本信息进行存储,因此数据库非常简单,仅仅是设计了一个用来存储用户排名信息的表结构。
用来存储用户基本信息的compositor_table的字段信息如图4-1所示。
CREATETABLE[compositor_table](
idINTEGERPRIMARYKEY,
nameVARCHAR(40)NOTNULL,
scoreINTEGERNOTNULL)
图4-1compositor表
Android中自带的SQLiteOpenHelper作用:
一个帮助类,帮助创建数据库和数据库版本管理。
本应用直接创建一个SkyGameDataBaseHelper类继承Android自带的数据库操作类SQLiteOpenHelper。
在onCreate()方法中创建表compositor_table。
publicvoidonCreate(SQLiteDatabasedb){
//TODOAuto-generatedmethodstub
Stringcreate_table=this.context.getResources().getString(R.string.create_compos_table);
//CREATETABLE[compositor_table](idINTEGERPRIMARYKEY,nameVARCHAR(40)NOTNULL,scoreINTEGERNOTNULL);
db.execSQL(create_table);
}
4.2.1DAO(数据库访问对象)
本应用中的数据库访问对象SkyGameDataBaseDao采用了单例模式,以保证当前应用中只存在一个DAO数据库访问对象。
使用了最简单的单例,并未从线程安全的角度进行进一步的限制,原因在于考虑到当前应用中只有3个Activity使用了DAO,由图4-2可知Activity之间的切换类似于进程对于CPU的占用一样,当前显示在界面上的Activity是活动状态而其他Activity则是挂起状态,因此不必担心它们的线程同时去创建DAO对象以引起当前系统中多个DAO对象的状况。
publicclassSkyGameDataBaseDao{
privatestaticSkyGameDataBaseDaoinstance=null;
privateSQLiteDatabasedatabase=null;
privateContextcontext=null;
privateSkyGameDataBaseHelperhelper=null;
publicstaticSkyGameDataBaseDaogetInstance(Contextcontext){
if(instance==null){
instance=newSkyGameDataBaseDao(context);
}
returninstance;
}
privateSkyGameDataBaseDao(Contextcontext){
this.context=context;
helper=newSkyGameDataBaseHelper(context,1);
while((this.database=helper.getWritableDatabase())==null);
}
publicvoidinsertPlayer(SkyGamePlayerplayer){
Stringsql=context.getResources().getString(Rpos_table);
ContentValuesvalues=newContentValues();
values.put("score",player.getScore());
values.put("name",player.getName());
if(!
this.database.isOpen()){
this.helper.onOpen(this.database);
}
try{
this.database.beginTransaction();
this.database.insert(sql,null,values);
this.database.setTransactionSuccessful();
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
this.database.endTransaction();
}
}
publicArrayList
ArrayList
Stringsql=context.getResources().getString(R.string.select_form_compos_table_count);
Cursorcursor=database.rawQuery(sql,null);
cursor.moveToFirst();
if(cursor.getCount()>0){
intcount=0;
count++;
players.add(newSkyGamePlayer(count,cursor.getString
(1),cursor.getInt
(2)));
while(cursor.moveToNext()){
count++;
players.add(newSkyGamePlayer(count,cursor.getString
(1),cursor.getInt
(2)));
}
}
returnplayers;
}
publicvoiddelete(){
Stringsql=context.getResources().getString(R.string.delete_from_compos_table);
if(!
this.database.isOpen()){
this.helper.onOpen(this.database);
}
try{
this.database.beginTransaction();
this.database.execSQL(sql);
this.database.setTransactionSuccessful();
}catch(SQLExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}finally{
this.database.endTransaction();
}
}
publicvoidclose(){
if(this.database.isOpen()){
this.database.close();
}
}
}
图4-2Android中Activity生命周期状态图
4.2.2SQLite数据库
SQLite,是一款轻量级的关系型数据库。
由于它占用的资源非常少,所以在很多嵌入式设备都是用SQLite来存储数据。
Android作为目前主流的移动操作系统,完全符合SQLite占用资源少的优势,故在Android平台上,集成了一个嵌入式关系型数据库—SQLite。
由于SQLite是轻量级的关系型数据库,它支持的SQL语句也是有限的,在使用SQL语句获得前6名玩家的信息时直接使用了SQLite不支持的TOP语句引起了异常。
在查阅相关资料后才发现SQLite不支持TOP语句,因此使用语句DESCLIMIT来代替TOP达到了自己想要的只获得表compositor_table中的score字段值最大的前六个记录信息。
SELECT*FROM[compositor_table]ORDERBY[score]DESCLIMIT6
4.3游戏界面设计
4.3.1开始界面
使用SurfaceView将图4-3中的未被按下的按钮和图4-5游戏开始界面背景图片绘制成游戏开始界面图4-6。
图4-3未被按下的按钮图标集图
4-4被按下的按钮图标集
图4-5开始界面背景图片
图4-6开始界面
4.3.1.1AndroidManifest.xml
Android应用程序中,并没有像C++和Java这样有main函数来作为应用程序的入口。
Android应用程序提供的是入口Activity,而非入口函数。
AndroidManifest.xml文件中定义了整个Android应用所包含的Activity.在AndroidManifest.xml中将SkyGameStartActivity设置为当前SkyGame启动时,默认加载的Activity,代码如下:
name=".SkyGameStartActivity" android: launchMode="singleTask"> name="android.intent.action.MAIN"/> name="android.intent.category.LAUNCHER"/> 4.3.1.2Activity中注册layout 在SkyGameStartActivity的onCreate方法中设置要显示的layout,方法如下所示: protectedvoidonCreate(BundlesavedInstanceState){ //TODOAuto-generatedmethodstub super.onCreate(savedInstanceState); setContentView(R.layou
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 飞机 大战 游戏 设计 开发 本科 毕业设计 论文