基于Java的飞机大战游戏开发.docx
- 文档编号:23560931
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:32
- 大小:35.27KB
基于Java的飞机大战游戏开发.docx
《基于Java的飞机大战游戏开发.docx》由会员分享,可在线阅读,更多相关《基于Java的飞机大战游戏开发.docx(32页珍藏版)》请在冰豆网上搜索。
基于Java的飞机大战游戏开发
毕业设计(论文)
题目
基于Java的飞机大战游戏开发
摘要
飞机大战是电脑游戏发展史中早期最为经典的游戏之一,无论是在电脑端、移动端、还是游戏机上,都能见到与飞机相关的射击类游戏。
不过,最初常见的飞机大战游戏是二维平面上的,并且大多以黑白的形式出现,而如今,在电脑上,不仅机型多,而且五颜六色,3D视觉冲击强。
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击,Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有了全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显着优势和广阔前景。
因此,本论文主要阐述以面向对象的程序开发语言Java及Eclipse为开发工具的飞机大战游戏。
首先简要介绍课题的研究背景、目的及意义,Java的发展历程、当前国内外的发展现状。
然后介绍Eclipse平台开发环境及环境搭建,最后讲述了基于Java飞机大战游戏功能的实现。
其功能模块如下:
主界面模块,Hero模块,Enemy模块,Bullet的类模块,检测子弹与敌机碰撞模块检测,相信其基于Java的飞机大战游戏将会受到更大的欢迎。
关键词:
飞机大战,游戏,Java,Eclips
Abstract
PlaneWaristheoneofthemostclassicgamesintheearlyhistoryofthedevelopmentofcomputergames.Wecanalwaysseeaircraft-relatedshootinggamewhetheritisonacomputerteminalormobileterminal.However,thefirstcommonplanewargameisatwo-dimensionalplane,andmostlyappearsintheformofblackandwhite,butnow,onthecomputer,notjustmodelsandmorecolorful,3Dstrongvisualimpact.
Javaisverypopularwithdeveloperssinceitappeared,formedthepowerfulshockfortherapidevelopmentoftheC++language.Javatechnologyhasexcellentversatility,efficiency,platformportability,andsecurityandiswidelyusedinpersonalPC,datacenter,gameconsoles,scientificsupercomputers,cellphonesandtheInternet.What’smore,Javahastheworld'slargestdeveloperofprofessionalcommunity.IntheglobalcloudcomputingandmobileInternetindustryenvironment,Javahasmoresignificantadvantagesandbroadprospects.
Therefore,thispaperdescribesthedevelopmentofobject-orientedprogramminglanguageJavaandEclipsedevelopmenttoolsforaircraftwargame.Firstly,itintroducesresearchbackground,purposeandmeaning,andtelledJavadevelopmentprocessandthecurrentdevelopmentstatusathomeandabroad.ThenintroducestheEclipseplatformdevelopmentenvironmentandbuiltenvironment,andfinallytellstheJava-basedaircraftwargamefeaturesimplementation.Itsfunctionmodulesareasfollows:
themaininterfacemodule,Heromodule,Enemymodule,Bulletmodule,andthedetectionmoduledetectingacollisionwiththeenemybullets.WebelievesitsJava-basedaircraftwargamewouldbewelcomedgreater.
KeyWords:
lightning,Game,Java,Eclipse
前言
项目背景
90年代的我们,对小时候的一些经典街机游戏肯定是印象深刻,像“飞机大战”、“超级玛丽”、“坦克大战”等,这些游戏伴随了我们童年,怀旧经典,常温这写经典的游戏,我选择了“飞机大战”作为设计的项目。
而基于Java语言开发“飞机大战游戏”,也是对大学知识的一次运用,本次的项目不但可以重拾儿时的回忆,也同样是对大学知识的一次回顾与复习。
飞机大战游戏拥有所有游戏共通的成分。
它们都有一个独立的循环体,这个循环体可以反复被执行,直到游戏退出。
游戏的关键之处在于,Hero战机飞行要不断的发出子弹,而Enemy战机按一定的波次、按不定的速度随机的从对方袭来,在程序运行的过程中,要不断的判断Hero战机是否与Enemy战机相撞,子弹是否与Enemy相撞,最后根据战场的相撞情况,是否结束各个战机和子弹的生命周期。
以后要做的所有的简单的游戏都要用到这些东西,所以学习这个过程并且实现它是非常重要的。
当第一次完成它之后,以后再做游戏是就能看出那个游戏有多难以及要花多长时间。
如果没有完整的完成过这些,哪怕一次,就永远不能完整地正确领会其中的每个元素。
当做大的项目时,就更不能确定其复杂星及所要的时间。
如果甚至不能正确地领会这个过程(因为你没能完成它),可能是没能建立一个合适的时间表或估计合适的时间,更有可能的是不够努力。
国内外研究现状
Java作为一门成熟的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛的应用,对于游戏开发来说,由于设计到比较复杂的情况,开发过程很多时候是一个不断修改的过程,可以方便的修改游戏内容是十分关键的。
由于其虚拟机特性,java本身就可以用来编写游戏脚本,可天衣无缝的和java语言进行交互,这些都极大的方便了java游戏编程。
由于Java语言的可移植性和平台无关性等优点,如今,国内外对于Java在游戏设计开发的运用有两大方面:
一个是手机游戏,一个就是web上的游戏开发,可见Java语言在其游戏开发方面尤其优点和独特性。
如今正由于智能手机游戏市场发生重大的变化,ios不再独霸与市场,Andriod的市场正在不断的扩散。
据国外媒体最新报道,Android智能机的市场份额为68%,远高于苹果的17%,用Java语言开发游戏也迎来了黄金期,特别是在手机游戏开发上。
Java语言称霸企业级应用这么多年,事实证明了它非常适合于开发大型软件。
如今Java在游戏开发领域,也正开始崭露头角
项目主要工作
本次的开发内同——基于Java的飞机大战游戏就是游戏与Java编程语言相结合的例子
从游戏的基本玩法出发,主要就是Hero和Enemy的对决,首先应该有个界面来装载整个游戏,然后就是Hero的移动方式(键盘移动),接下来就是Hero子弹的生成,然后是Enemy的出现方式,然后Enemy的子弹生成,最后是Hero与Enemy的对战结果。
该游戏要满足以下功能性需求:
(1)Hero战机的控制。
(2)子弹的控制
(3)多种Enemy战机的出现方式
(4)各种战机和子弹的碰撞情况的检测和控制
(5)各个战机和子弹生命周期的结束控制
第一章开发技术和开发平台
本软件涉及到的开发技术是Java,开发平台是Eclipse。
因此,本章主要详细介绍用Java开发的特性和优势,以及开发平台Eclipse的合理配置。
一.1Java语言特性
Java编程语言的风格十分接近C、C++语言。
Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。
Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载,多重继承(以接口代替)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
在Java1.5版本中,Java有引入了泛型编程,类型安全的枚举,不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码,然后依赖不同平台上的虚拟机来解释执行字节码。
从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。
(1)跨平台
跨平台是指Java能运行与不同的平台。
Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。
使用Java编写的程序能在世界范围内共享。
Java的数据类型与机器无关,Java虚拟机是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供与不同平台的接口的。
(2)安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。
Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样更可以避免病毒通过指针侵入系统。
Java对程序提供了安全管理器,防止程序的非法访问。
(3)面向对象
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁星和便于维护性。
类的封装性、继承性等有关对象的特性,使得程序代码只需一次编译,然后通过上述特性反复利用。
程序员只需把主要精力用在类和接口的设计和引用上。
Java提供了众多的一般对象的类,通过继承即可使用父类的方法。
在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。
(4)分布式
Java建立在扩展TCP/IP网络平台上。
库函数提供了用HTTP和FTP协议传送和接受信息的方法。
这使得程序员使用网络上的文件和使用本机文件一样容易。
(5)健壮性
Java致力于检查程序在编译和运行时的错误。
类型检查帮助检查出许多开发早期出现的错误。
Java自己操纵内存减少了内存出错的可能性。
Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期,并且Java还提供了Null指针检测、数据边界检测、异常出口等功能。
一.2Java技术在游戏开发中的应用
一.2.1绘图技术
Applet程序中所采用的AWT的绘图机制主要涉及三个方法:
paint()方法,update()方法和repaint()方法,update()方法和paint()方法都有一个Graphics类参数。
Graphics是画图的关键,它可以支持两种绘图:
一种是基本的绘图,如:
画线、矩形、园等:
另一种是画图像,主要用于动画制作。
一.2.2游戏开发中的交互
一个优秀的游戏必定是与玩家不断的沟通,给予玩家充分的操作时间,而游戏又必须快速地,争取的对玩家动作做出反应,否则这样的游戏,不能称为一个好游戏。
在Java游戏的开发中,往往使用事件处理器来进行设计。
事件:
用户对程序的某一种功能性操作。
Java中的事件主要有两种:
组件类事件、动作类事件。
事件编程:
用户编程定义每个特定时间发生时程序应做出何种响应,并且这些响应代码会对应的时间发生时有系统自动调用。
事件源是产出事件的组件。
监听器是对组件所产生的时间做出具体响应的代码,即事件产出与处理分别由两个不同类加以编程实现。
事件处理机制是AWT组件自身不编程处理相应的时间,而是交由时间监听器处理。
事件适配器:
由于事件监听接口是Abstract类型,意味着实现该接口的类应全都实现其各个成员函数,但实际应用中可能只需处理某些事件响应代码:
此时再采用实现事件监听器接口可能会导致编程复杂。
JDK中提供事件适配器方式来实现事件编程。
一.2.3基于AWT及SWING的游戏界面开发
抽象窗口工具包AWT是API为Java程序提供的建立图形用户界面GUI工具集,AWT可用于Java的applet和application中。
它支持图形用户界面编程的功能包括:
用户界面组件、事件处理模型、图形和图像工具、包括形状、颜色和字体类、布局管理器,AWT是SWING的基础。
Swing的产生主要原因就是AWT不能满足图形化用户界面发展的需要。
SWING是由100%纯Java实现的,SWING组件是用Java实现的轻量级组件,没有本地代码,不依赖操作系统的支持,这是他与AWT组件的最大区别。
由于AWT组件通过与具体平台上相关的对等类实现,因此SWING组件具有更强的实用性。
SWING在不同平台上表现一致,并且有能力提供本地窗口系统不支持的其它特性。
SWING采用了一种MVC的设计范式,即“模型-视图-控制”。
一.2.4多线程技术的应用
线程简介:
进程就是程序运行时的一个实例。
线程可以看做单独地占有CPU时间来执行相应的代码的。
在多处理机计算机上实现多线程时,它们可以并行工作,而且采用适当的分时策略可提高程序运行的效率。
线程是共享地址空间的,也就是说多线程可以同时读取相同的地址空间,并且利用这个空间进行交换数据。
Java实现多线程的过程:
与其他语言不一样的是,线程的概念在Java是语言中重要的,根深蒂固的,因为在Java语言中的线程系统是Java语言自建的,Java中有专门的支持多线程的API库。
在使用Java创建线程的时候,你可以生成一个Thread类或者其他的子类对象,并给这个对象发送start消息,这样依赖程序会一直执行,直到run返回为止,此时该线程结束了。
一.2.5Java网络技术的应用
Java最初是作为一种网络编程语言出现的,他能够实用网络上的各种资源和数据,与服务器建立各种传输通道,将自己的数据传送到网络的各个地方。
你可以用Java轻松地完成这些,因为Java类库提供了很强大的网络功能。
Java中有关网络方面的功能都定义在J程序包中。
Java所提供的网络功能可大致分为三大类:
(1)URL和URLConnection这是三大类功能中最高级的一种。
通过URL的网络资源表达方式,很容易确定网络上数据的位置。
利用URL的表示和建立,Java程序可以直接读入网络上所放的数据,或把自己的数据传送到网络的另一端。
(2)Socket所谓Socket,可以想象成两个不同程序通过网路的通道,而这时传统网络程序中最常用的方法。
一般在TCP/IP网络协议下的客户服务器软件采用Socket作为交互的方式。
(3)Datagram是这些功能中最低级的一种。
其他网络数据传送方式,都假想在程序执行时,建立一条安全稳定的通道。
但是以Datagram的方式传送数据时,只是把数据的目的地记录在数据包中,然后就直接放在网络上进行传输,系统不保证数据一定能够安全送到,也不能确定什么时候可以送到。
也就是说,Datagram不能保证传送质量。
一.2.6Eclipse
Eclipse是一个开发源代码、基于java可扩展开发平台。
就其本身而言。
它知识一个框架和一组服务,用于通过插件组件构建开发环境,它会自动检测电脑上安装的JDK。
由于Eclipse开源免费,而且其插件众多,扩展功能强大,它的代码提示功能能帮助程序员快速的录入代码,此外它的重构功能也让修改代码减少了很多的工作量,因此对于大多数用户很乐于将Eclipse当做Java集成开发环境(IDE)来使用,Eclipse还包括插件开发环境,这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有具开发人员都具有同等的发挥场所。
一.3开发平台搭建
一.3.1安装JDK和Eclipse
从官网下载下面的安装包并安装:
(1)JDK版本1.7.0_51,版本必须是1.7以上。
(2)Eclipse版本Mars.2Release(4.5.2),其他版本也可以。
一.3.2JDK环境变量配置
(1)在我的电脑鼠标右键→属性→点击“高级”选项卡,
(2)点击“环境变量”,点击“新建”
变量名:
JAVA_HOME
变量值:
C:
\ProgramFiles\Java\jdk1.7.0(以JDK实际安装路径为准)
(3)点击“确定”,点击“新建”,如果有path变量双击打开,没有就点击“新建”
变量名:
Path
变量值:
%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin(变量值之间用“;”隔开)
(4)点击“确定”,即可完成配置。
第二章飞机大战游戏需求分析
二.1用户需求分析
飞机大战游戏首先是一款游戏,它具备所有的游戏所共有的基本特性,每个游戏的最外层都会有一层控制循环,在这个循环里,可以产生各种各样的敌机,可以发生各种各样的碰撞,直到玩家主动退出游戏,才会退出循环,否则会一直的执行下去。
从开发游戏的角度出发,主要就是Hero的移动方式控制,接下来就是Hero子弹的生成,然后是Enemy的出现方式,最后就是各种战机和子弹的碰撞检测,公布对战结果。
该游戏主要包括以下几个功能:
(1)Hero飞行的控制——键盘事件响应
(2)子弹飞行轨迹的控制——多线程的创建
(3)Enemy出现方式和速度的控制——多线程的创建
(4)各种飞行物体碰撞的检测控制——多线程的创建
游戏程序是一项精度要求很高的程序系统,飞行速度的把控,还有响应速度的控制的要求都非常严苛,由于代码利用率很高。
一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的效率在后台等待响应,若有丝毫的差别都将很容易导致程序在与运行不久后可能出现与想象中完全不同的差别,甚至死循环。
因此,其逻辑设计应当相当严谨,需将所有可能发生的时间及意外情况考虑在设计中。
二.2可行性分析
可行性分析也称可行性研究,实在调查的基础上,针对新软件的开发是否具备必要性和可能性,对新软件的开发从技术、经济、社会等方面进行和研究,以避免投资失误,保证新软件的开发成功。
可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。
下面将分别从技术、经济、社会三个方面对基于Java的飞机大战游戏的建设进行分析和研究。
(1)技术可行性
说技术上的可行性主要分析技术条件能否顺利完成开发工作,硬、软件能否满足开发者的需要等。
该软件采用的开发工具是功能强大的Eclipse,它具有十分强的扩展能力,需要的只是下载安装相关的插件,开发平台J2ME更是当前最受欢迎的手机软件开发平台,而且它完全满足飞机大战游戏的开发实现的要求。
因此,软件的软件开发平台已经成熟可行。
硬件方面,科技飞速发展的今天,硬件更新的速度越来越快,容量越来越大,可靠性越来越高,价格越来越低,其硬件平台完全能满足此软件的需要。
由以上分析可知,本软件的开发在技术上是可行的。
(2)经济可行性
本软件开发成本低,在经济上是可以接受的,并且本软件是实施后可以显着提高工作效率,有助于飞机大战游戏的管理。
而且软件维护简单,实用性强,一次性开发使用,即可长久使用。
(3)社会可行性
本软件是根据基于Java的飞机大战游戏的实际工作情况开发研制的,是通过在网上大量的调研得出的,软件的软件设计实在独立的环境下完成的,不存在侵犯知识产权的情况。
有以上分析可知,本软件具有社会可行性。
二.3总体设计原则
本软件为了设计,实现和后期维护的方便,以及软件用户使用的便利,所以必须采取一定的设计原则。
其主要设计原则有:
(1)简单性:
在实现软件的功能的同时,尽量让软件操作简单易懂,这对于一个软件来说是非常重要的。
(2)针对性:
本软件设计是基于Java的飞机大战游戏的需要,因此具有良好的实用性。
(3)一致性:
命名规则一致性:
类型、变量和其他元素的命名规则保持一致;功能一致性:
完成同样的功能应该尽量使用同样的元素;元素风格一致性:
界面元素的美观风格、摆放位置在同一个界面和不同界面之间都应该是一致的。
二.4功能模块设计
(1)游戏状态的控制功能
游戏的状态控制包括初始化、运行、结束状态。
首先进入游戏的初始化界面,显示游戏的Logo,玩家的菜单选择,接着传送到游戏的主战场,Hero在移动中发射子弹,这时各种敌机从对方迎面扑来,来者不善,Hero奋力抗击,当Hero被Enemy撞击摧毁后,游戏进入结算界面,显示Hero的战绩,到此游戏结束。
(2)玩家游戏控制功能
玩家可以通过控制键盘来控制Hero的移动和Hero子弹的发射。
二.5游戏难点分析
(1)战机和背景的美化。
游戏优美清新的界面会给用户带来愉快的心情和美感。
所以在本游戏中,主要采用借鉴原有的游戏的画面,采用PS将各种图片渲染、修饰,提高玩家玩的兴致和欲望。
(2)动画的实现。
Hero和Enemy的爆炸动画效果可以利用图片数组、切片的变换形成动画。
利用程序不断改变的图片数组的下标,从而实现像电影中帧的概念,从而可以实现爆炸效果。
(3)多线程技术的实现。
线程机制的应用是实现游戏控制的基石,游戏中的刷帧、后台资源的加载以及对各类角色,如Hero、Enemy、子弹的自动控制都需要线程来实现,以此来实现对整个游戏的控制。
(4)碰撞问题的解决。
碰撞检测技术的实现要综合运用数学和物理知识,在不同的情况下,采用不同的碰撞检测方式。
第三章飞机大战功能模块实现
三.1项目模块介绍
飞机大战项目的各模块组织如图所示:
图3.1项目各模块架构
beans:
存放Hero,Enemy,子弹相关的实体类
controler:
:
实现了战机之间、子弹和战机相撞的逻辑控制。
utils:
封装了Java图形界面、文本、图片、图画的工具类。
views:
:
实现了初始化界面和结束界面的封装。
(2)资源模块:
images:
用于存放各种战机,子弹的图片资源。
sounds:
用于存放游戏运行时的背景音乐,爆炸音乐
sprites:
用于存放各种战机的动画,如战机的启动,爆炸
(3)引用的第三方Jar包如下:
图3.2第三方Jar包
OrgSchoolGame.jar是封装了JavaAPI的Jar包
三.2游戏首页的实现
三.2.1界面实现
图3.3游戏初始化界面
三.2.2核心代码
publicclassStartWin
{
GameImagestart;
GameImageover;
intchoice=0;
/*
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 飞机 大战 游戏 开发