基于Android的飞机大战游戏设计与开发Word文件下载.docx
- 文档编号:7721936
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:78
- 大小:4.09MB
基于Android的飞机大战游戏设计与开发Word文件下载.docx
《基于Android的飞机大战游戏设计与开发Word文件下载.docx》由会员分享,可在线阅读,更多相关《基于Android的飞机大战游戏设计与开发Word文件下载.docx(78页珍藏版)》请在冰点文库上搜索。
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;
第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());
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<
SkyGamePlayer>
getPlayers(){
ArrayList<
players=newArrayList<
();
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);
this.database.execSQL(sql);
}catch(SQLExceptione){
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,代码如下:
<
activityandroid:
name="
.SkyGameStartActivity"
android:
launchMode="
singleTask"
>
<
intent-filter>
actionandroid:
android.intent.action.MAIN"
/>
categoryandroid:
android.intent.category.LAUNCHER"
/intent-filter>
/activity>
4.3.1.2Activity中注册layout
在SkyGameStartActivity的onCreate方法中设置要显示的layout,方法如下所示:
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.sky_game_start_layout);
//设置当前activity调用的layout
//其他操作
4.3.1.3BroadcastReceiver
由于本应用是有多个Activity为了解决多个Activity在其中任意一个Activity结束时都会相应一起退出系统,因此针对每一个Activity设置一个BroadcastReceiver来接收广播,一旦接收到广播当前Activity自动退出。
Activity接收到广播后退出的代码如下所示:
privateBroadcastReceiverexitReceiver=newBroadcastReceiver(){
@Override
publicvoidonReceive(Contextcontext,Intentintent){
//TODOAuto-generatedmethodstub
SkyGameScreenRollActivity.this.finish();
};
4.3.1.4发送广播
而当前Activity在被按下“EXIT”或者“退出”按钮时,会向外界发送一个广播,
之后结束自己:
Activityactivity=(Activity)context;
Intentintent=newIntent(EXIT);
intent.setAction(EXIT);
activity.sendBroadcast(intent);
activity.finish();
4.3.1.5MediaPlayer(媒体播放器)
本应用使用Android的MediaPlayer来演奏每一个页面的背景音乐。
背景音乐可以存放在两个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Android 飞机 大战 游戏 设计 开发