基于Android操作系统的飞机大战手机游戏本科生毕业论文设计.docx
《基于Android操作系统的飞机大战手机游戏本科生毕业论文设计.docx》由会员分享,可在线阅读,更多相关《基于Android操作系统的飞机大战手机游戏本科生毕业论文设计.docx(43页珍藏版)》请在冰豆网上搜索。
基于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)其它
摘要:
飞机大战是滚动屏动作类游戏的一种,其中融入了很多动作类游戏特有的技术,并且画面流畅、声音震撼。
当今网络发展迅速,益智类游戏被广泛运用到网络各大平台上。
借鉴网络各大平台上的游戏,通过EclipseAndroidSDK利用Java语言编写的《飞机大战》。
本文阐述了在Android平台上,面向对象的软件开发思想对飞机大战游戏系统的分析、设计及实现过程。
在项目的实践过程中,主要用到了以下技术:
手机布局主要使用了XML设计,程序及其子模块的生命周期管理用到了Activity流程控制,游戏的画面更新使用的是手机的2D图形编程。
本论文的前半部分将简要介绍系统相关的行业信息及基础的技术知识,后半部分将对本人在系统各模块中所使用的关键技术的实现进行了全面的介绍。
关键词:
滚屏游戏;飞机大战;手机游戏;Android平台
Abstract:
theWorldWarIIaircraftrollingscreenactiongameone,incorporatingmanyactiongamesuniquetechnology,andsmoothpicture,soundrock.Thenetworkisdevelopingrapidly,apuzzlegameiswidelyappliedtothenetworktheplatform.Fromthenetworktheplatformgame,throughtheEclipseAndroidSDKJavalanguagepreparedbythe"WorldWarIIaircraft".
ThispaperelaboratedontheplatformofAndroid,object-orientedsoftwaredevelopmentthoughttotheWorldWarIIaircraftgamesystemanalysis,designandimplementationprocess.Inthepracticeoftheprojectprocess,themainuseofthefollowingtechniques:
thelayoutofthemainmobilephoneusingXMLdesign,proceduresandsubmodulelifecyclemanagementusedintheActivityprocesscontrol,thegamescreenisupdatedusingthemobilephone2Dgraphicsprogramming.Inthispaper,thefronthalfpartofbriefintroductionofsystemrelatedindustryinformationandbasictechnicalknowledge,thesecondpartoftheeachmoduleofthesystemusedintherealizationofthekeytechnologyforacomprehensiveintroduction.
Keywords:
scrollinggame;WorldWarIIaircraft;mobilephonegames;Androidplatform
一、绪论…………………………………………………………………5
二、相关研究综述…………………………………………………………6
(一)关于java语言………………………………………………6
(二)关于Android……………………………………………………8
三、系统开发环境及相关技术……………………………………………10
四、游戏所需类的分析与实现……………………………………………11
(一)游戏的框架简介…………………………………………………11
(二)游戏界面的框架简介……………………………………………12
(三)各个类的简要介绍…………………………………………………13
五、游戏界面展示…………………………………………………………22
总结……………………………………………………………………27
致谢………………………………………………………………………28
参考文献…………………………………………………………………29
前言
随着3G移动网络应用的推广,手机游戏的规模、复杂程度日益增强;其技术手段、设计思想、系统体系结构都发生了深刻的变化。
手机操作系统正朝着高处理能力、多功能、智能化的方向发展。
近年来,网络文化市场发展很快,随着互联网的迅速普及、宽带的接入社区和家庭,我国网络游戏市场发展迅速并进入了一个高速增长期,并已经创造了较大的产值,带动了相关产业的发展。
现在,游戏的类型也由最初的动作游戏和简单益智游戏向更复杂、更高智力,更具真实性的游戏发展。
目前的游戏种类繁多,包括角色扮演、仿真模拟类、人工智能、休闲类、渲染类、网络类等等,甚至有的游戏包含了好几种类型。
机战类游戏一直以来都很多。
但仿真模拟类的游戏却有不少,现在休闲类的技术广泛的应用到很多游戏里面等等。
飞机大战游戏是广泛人士喜爱的游戏,通过上下左右键控制方向A键发射子弹,游戏中有加血道具与子弹升级道具。
并有关卡BOSS等着与你死战。
鉴于游戏的对社会的巨大影响力和光辉的发展前景,以及我们自己对游戏爱好,这次的毕业设计我们决定尝试设计和制作一个具有一定可玩性的游戏。
期间,我们收集相关资料、研究同类型的游戏、阅读有关这类型游戏和相关技术性的书籍,通过制作游戏项目来熟悉游戏的制作思路、过程,加深对面向对象编程语言的掌握,培养自己的耐心、细心和考虑问题的全面性,同时解决本课题要完成的问题,如游戏框架如何构建,如何完善游戏的各种功能,如何能让游戏有音乐和音效的实现,如何能让游戏过关,如何能让游戏界面美观,看起来舒服感觉。
一、绪论
1.1研究内容
Android平台飞机大战是基于Android手机平台,运用Java语言编写的一款手机滚屏类射击游戏。
1.2研究意义
Android平台手机游戏的开发的意义在于活动人的思维,使人精神放松,锻炼人的反应能力与应变能力。
1.3研究现状和发展趋势
据Gartner最新数据显示,2010年第二、三季度全球智能手机销售继续大幅增长,其中第三季度安卓占全球智能手机市场的25.5%,仅次于塞班,成为第二大智能手机系统。
2010第二、三季度与去年同期相比,增度分别是15.4%及22%,增势迅猛。
而塞班系统较09年的市场份额,尽管终端销量有大幅度提升,但增势下滑10%,形势非常严峻。
其他操作系统的表现则要平稳很多。
安卓是首款开源代码的操作系统,采用Linux内核,开放手机联盟(OHA)成员可以任意使用和修改安卓的SDK软件包。
系统的开源性使其具有良好的拓展性,一方面,为众多移动应用开发者提供了良好的系统性平台,有利于移动应用的集合;另一方面,终端厂商可以针对自身的特殊需要“定制化开发”。
与此相比,尽管2010年2月,塞班基本完成开源工作,但由于代码臃肿,用户界面设计缺失,塞班的开源并无实际意义,错失发展良机。
我们认为,安卓在全球市场的成长壮大,塞班市场份额不断下跌已成不争事实。
安卓操作系统发展迅猛主要得益于免费、开源和良好产业运作策略,这三点为安卓在智能手机市场赢得更多的发展机遇。
系统的免费让更多的厂商加入,推动了份额的上升;代码的开源让更多的开发者进入应用开发;应用的丰富吸引了更多用户选择,这也是谷歌值得众多厂商学习的地方。
此外,谷歌通过OHA联合众多厂商进行系统研发,不断更新版本,将系统应用推广到更多的终端产品中,确保用户体验持续改善。
二、相关研究综述
2.1关于java语言
Java编程特点
1、Java语言是简单的。
Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。
另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。
特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。
2、Java语言是一个面向对象的。
Java语言提供类、接口和继承等原语,为了简单起见,只支持类之间的单继承,但支持接口之间的多继承,并支持类与接口之间的实现机制(关键字为implements)。
Java语言全面支持动态绑定,而C++语言只对虚函数使用动态绑定。
总之,Java语言是一个纯的面向对象程序设计语言。
3、Java语言是分布式的。
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(javanet),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。
Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
4、Java语言是健壮的。
Java的强类型机制、异常处理、废料的自动收集等是Java程序健壮性的重要保证。
对指针的丢弃是Java的明智选择。
Java的安全检查机制使得Java更具健壮性。
5、Java语言是安全的。
Java通常被用在网络环境中,为此,Java提供了一个安全机制以防恶意代码的攻击。
除了Java语言具有的许多安全特性以外,Java对通过网络下载的类具有一个安全防范机制(类ClassLoader),如分配不同的名字空间以防替代本地的同名类、字节代码检查,并提供安全管理机制(类SecurityManager)让Java应用设置安全哨兵。
6、Java语言是体系结构中立的。
Java程序(后缀为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀为class的文件),然后可以在实现这个Java平台的任何系统中运行。
这种途径适合于异构的网络环境和软件的分发。
7、Java语言是可移植的。
这种可移植性来源于体系结构中立性,另外,Java还严格规定了各个基本数据类型的长度。
Java系统本身也具有很强的可移植性,Java编译器是用Java实现的,Java的运行环境是用ANSIC实现的。
8、Java语言是解释型的。
如前所述,Java程序在Java平台上被编译为字节码格式,然后可以在实现这个Java平台的任何系统中运行。
在运行时,Java平台中的Java解释器对这些字节码进行解释执行,执行过程中需要的类在联接阶段被载入到运行环境中。
9、Java是高性能的。
与那些解释型的高级脚本语言相比,Java的确是高性能的。
事实上,Java的运行速度随着JIT(Just-In-Time)编译器技术的发展越来越接近于C++。
10、Java语言是多线程的。
在Java语言中,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。
通常有两种方法来创建线程:
其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。
值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。
线程的活动由一组方法来控制。
Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。
11、Java语言是动态的。
Java语言的设计目标之一是适应于动态变化的环境。
Java程序需要的类能够动态地被载入到运行环境,也可以通过网络来载入所需要的类。
这也有利于软件的升级。
另外,Java中的类有一个运行时刻的表示,能进行运行时刻的类型检查。
Java语言的优点
1java最初是为对家用电器进行集成控制而设计的一种语言,因此它必须简单明了。
Java语言的简单性主要体现在以下三个方面:
1.Java的风格类似于C++,因而C++程序员是非常熟悉的。
从某种意义上讲,Java语言是C及C++语言的一个变种,因此,C++程序员可以很快就掌握Java编程技术。
2.Java摒弃了C++中容易引发程序错误的地方,如指针和内存管理。
3.Java提供了丰富的类库。
2面向对象可以说是Java最重要的特性。
Java语言的设计完全是面向对象的,它不支持类似C语言那样的面向过程的程序设计技术。
Java支持静态和动态风格的代码继承及重用。
单从面向对象的特性来看,Java类似于SmallTalk,但其它特性、尤其是适用于分布式计算环境的特性远远超越了SmallTalk。
3另外,为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。
只要有Java运行系统的机器都能执行这种中间代码。
现在,Java运行系统有Solaris2.4(SPARC),Win32系统(Windows95和WindowsNT)等.Java源程序被编译成一种高层次的与机器无关的byte-code格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。
2.2关于Android
2.2.1android构架
Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS),中间件(MiddleWare)和应用程序(Application)。
根据Android的软件框图,其软件层次结构自下而上分为以下几个层次:
图2.2Android系统架构
2.2.2XUL界面布局
XUL是一种基于XML的语言,因此需要对XML(特别是XML名称空间)很熟悉。
XUL是英文“XMLUserInterfaceLanguage”的首字母缩写。
顾名思义,它是一种应用XML来描述使用者界面的标示语言。
2.2.3Android的Activity组件
Activity,一般代表手机屏幕的一屏,相当于浏览器的一个页面。
在Activity中添加view,实现应用界面和用户交互。
一个应用程序一般由多个Activity构成,这些Activity之间可互相跳转,可进行页面间的数据传递。
每个Activity都有自己的生命周期。
2.2.4SQLite数据库
在Android平台上,集成了一个嵌入式关系型数据库—SQLite。
SQLite是支持结构化查询的轻量级数据库,能很好得适应于移动设备的应用。
Android提供了一个名为SQLiteDatabase的类,该类封装了一些操作数据库的API,使用该类可以完成对数据进行添加(Create)、查询(Retrieve)、更新(Update)和删除(Delete)操作(这些操作简称为CRUD)。
2.2.5Android2D图形编程
1、SimpleGraphicsinView:
就是直接使用Android已经实现的一些画图操作,比如说images,shapes,colors,pre-definedanimation等等。
这种方式只能画静态或者极为简单的2D图画,对于实时性很强的动画,高品质的游戏都是没法实现的。
2、Canvas:
首先我们要明白这个Canvas是一个2D的概念,是在Skia中定义的。
也就是说在这个方式下还是说的画2D图形。
三、系统开发环境及相关技术
3.1Android开发环境介绍
Android的上层应用程序是用Java语言开发,同时还需要基于Dalvik虚拟机,所以,Google公司推荐使用主流的Java继承开发环境Eclipse。
只有Eclipse还不够,因为是使用Java语言进行开发,还应该有由SUN公司提供的JavaSDK(其中包括JRE:
JavaRuntimeEnvironment)。
此外,Android的应用程序开发和Java开发有较大区别的,所以还需要有Google提供的AndroidSDK。
同时,还需要在Eclipse安装ADT,为Android开发提供开发工具的升级或者变更,是Eclipse下开发工具的升级下载的工具。
(1)JavaSDK
(2)Eclipse
(3)AndroidSDK
3.2Android开发平台搭建
Android开发平台搭建步骤:
①首先到http:
//www.eclipse.org/downloads/下载Eclipse集成开发环境并且解压,这里推荐下载JavaEE集成版本,可以为平台的搭建省下不少工作。
接着再去站点下载SDK后安装,下载SDK1.5后解压。
第一步下载工序就结束了。
②双击Eclipse解压后目录中的eclipse.exe然后启动,选择Eclipse菜单中的Help->InstallNewSoftware->选项卡上的AvailableSoftware,点击右侧的“Add”输入http:
//dl-with”下拉菜单中选择刚才输入的网址。
过一会就会出现一个DeveloperTools选项,勾上以后点击Next以后Eclipse会自动网上查找Android开发工具插件,然后找到AndroidDDMS和AndroidDevelopmentTools,选中这两个点击Finish,Eclipse就会自动下载并安装Android插件了,最后会提示重启Eclipse。
③重启后选择Eclipse菜单中的Windows->Preferences在左侧的Android项目中SDKLocation中填入AndroidSDK解压后的目录,然后点击Apply。
4在WindowsXP的系统变量中的path变量中添加一个值,该值指向解压后的AndroidSDK目录下的tools文件夹。
四、游戏所需类的分析与实现
4.1游戏的框架简介
图4.1游戏的类框架
1、启动游戏,在PlaneActivity中会先进入加载界面ProcessView,然后后台加载欢迎界面WelcomView,当加载完成后屏幕切换到欢迎界面,并启动WelcoeViewThread线程生成欢迎界面的动画效果。
2、当欢迎动画播放完成后屏幕会停留在选择状态等待玩家操作。
3、当玩家单击“帮助”时将初始化帮助界面HelpView并将其显示出来。
4、当玩家大几“开始游戏”按钮时,屏幕将显示加载界面。
后台将初始化游戏界面GameView,在地图信息类Maps中初始化此关卡中的所有敌机、变枪的道具、补血的道具等。
5、初始化游戏界面的同时启动GameViewBackGroundThread线程,以初始滚动游戏界面的背景图片。
6、当玩家发射炮弹或敌机发射炮弹时会创建Bullet对象,并将其添加到已知的容器中。
7、在游戏过程中如果需要显示爆炸效果,会创建爆炸效果类Explode以及ExplodeThread类来渲染爆炸效果。
8、游戏中所有类中使用的常量全部封装到常量类ConstantUtil类中。
4.2游戏界面的框架简介
图4.2游戏界面的类框架
1、GameView在初始化是会从Maps读取当前关卡的地图信息,包括敌机、补血道具、换枪道具等。
2、在界面初始化的同时,还需要启动MoveThread线程、GameViewBackGroundThread线程、KeyThread线程以及ExplodeThread线程。
3、GameView会在适当的时候从Plane类中读取主战飞机的信息进行绘制。
4、当主战飞机发射子弹时,会创建Bullet对象并添加到指定容器中,此时MoveThread同样需要定时改变子弹对象的位置。
5、在以上过程中,全部都需要PianeActivity的管理与ConstanUtil的参与。
4.3各个类的简要介绍
1、共有类:
Activity的实现类PlaneActivity,该类是通过扩展基类Activity实现的,是整个游戏程序的入口。
键盘监听线程KeyThread,该类为手机键盘的监听线程,每隔一段时间读取一次键盘的状态值,并根据当前键盘状态做出相应的操作
packagewyf.ytl;
publicclassKeyThreadextendsThread{
intspan=20;//睡眠的毫秒数
intcountMove=0;//飞机移动的计数器
intcountFine=0;//飞机发子弹的计数器
intmoveN=3;//每三次循环移动一下
intfineN=5;//每五次循环发一次子弹
PlaneActivityactivity;//Activity的引用
privateboo