基于Java的飞机大战游戏的设计与实现.docx
- 文档编号:23583625
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:48
- 大小:267.80KB
基于Java的飞机大战游戏的设计与实现.docx
《基于Java的飞机大战游戏的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于Java的飞机大战游戏的设计与实现.docx(48页珍藏版)》请在冰豆网上搜索。
基于Java的飞机大战游戏的设计与实现
基于Java的飞机大战游戏的设计与实现
摘要
飞机大战是电脑游戏发展史中早期最为经典的游戏之一,经常能在掌上游戏机、手机以及电脑上见到这个游戏。
不过,以往常见的飞机大战游戏是二维平面上的,并且大多以黑白的形式出现,当然在电脑上可以看到多种颜色的飞机大战。
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
本游戏是一个基于java的飞机大战游戏,利用Eclipse平台实现经典的飞机大战游戏。
游戏主要涉及了游戏状态控制功能、游戏难度的调整、游戏界面绘画功能、玩家游戏控制功能,最终展示了游戏开发的基本开发过程和设计思路。
关键词:
飞机大战;游戏;java;Eclipse平台
DesignandimplementationofairplanewargamebasedonJava
Abstract
Lightningisthehistoryofthedevelopmentofcomputergamesintheearlyoneofthemostclassicgame,oftenonahandheldgameconsoles,mobilephoneandcomputertoseethisgame.However,thepreviouscommonlightninggameistwo-dimensionalplane,andmostlyinblackandwhite,inthecourseofthecomputercanseelightningincolor.
SinceJavaisverypopularafterthelaunch,therapiddevelopmentoftheC++languagetoformastrongimpact.Javatechnologyhasexcellentversatility,efficiency,platformportabilityandsecurity,widelyusedinpersonalPC,datacenter,gameconsoles,scientificsupercomputers,cellphonesandtheInternet,alsohastheworld'slargestdeveloperofprofessionalcommunity.IntheworldofcloudcomputingandmobileInternetindustryenvironment,Javaandmorehaveasignificantadvantageandbroadprospects.
ThisgameisagamebasedontherealizationofJavalightning,lightningclassicgamebasedonEclipseplatform.Thegameismainlyinvolvedinthegamestatecontrolfunction,thedifficultyofthegame,thegameinterfacetoadjustthedrawingfunction,gameplayercontrolfunction,finallyshowsthebasicdevelopmentprocessofgamedevelopmentanddesignideas.
Keywords:
lightning;game;Java;Eclipseplatform
1引言
1.1项目背景
90年代的我们,对小时候的一些经典街机游戏肯定是印象深刻,像“飞机大战”、“超级玛丽”、“坦克大战”等,这些游戏伴随了我们童年,怀旧经典,重温这些经典的游戏,我选择“飞机大战”作为设计的项目。
而基于JAVA语言开发“飞机大战游戏”,也是对大学知识的一次运用,本次的项目不但可以重拾儿时的回忆,也同样是对大学知识的一次回顾与复习。
飞机大战游戏拥有所有游戏共通的独立成份。
它有一个游戏循环(这个过程被反复执行直到游戏退出)。
这个游戏循环读取玩家的输入,处理这个输入,然后更新游戏的元素(下落的Enemyairplane),并且检查是Heroairplane的输赢(本机是否空血)。
以后要做的所有的简单的游戏都要用到这些东西,所以学习这个过程并且实现它是非常重要的。
当第一次完成它之后,以后再做游戏时就能看出那个游戏有多难以及要花多长时间。
如果没有完整的完成过这些,哪怕一次,就永远不能完整地正确领会其中的每个元素。
当做大的项目时,就更不能确定其复杂性及所要的时间。
如果甚至不能正确地领会这整个过程(因为你没能完成它),可能是没能建立一个合适的时间表或估计合适的时间,更有可能的是不够努力。
1.2国内外研究现状
Java作为一门成熟的编程语言,以其简单性、可移植性和平台无关性等优点,得到了广泛地应用,对于游戏开发来说,由于涉及到比较复杂的情况,开发过程很多时候是一个不断修改的过程,可以方便的修改游戏内容是十分关键的。
由于其虚拟机特性,java本身就可以用来编写游戏脚本,目前也有例如beanshell、groovy等脚本语言可以无缝的和java语言进行交互,这些都极大的方便了java游戏编程。
由于Java语言的的可移植性和平台无关性等优点,如今,国内外对于Java在游戏设计开发的运用有两大方面:
一个是手机游戏,另一个就是web上的游戏开发,可见Java语言在游戏开发方面有其优点和独特性。
如今正由于智能手机游戏市场发生重大的变化,ios不再独霸于市场,Android的市场正在不断的扩散。
据国外媒体最新报道,Android智能机的市场份额为68%,远高于苹果的17%,用Java语言开发游戏也迎来了黄金期,特别是在手机游戏开发上。
Java语言称霸企业级应用这么多年,事实证明了它非常适合于开发大型软件。
如今Java在游戏开发领域,也正开始展露头脚。
1.3项目主要工作
本次的开发内容——基于JAVA的飞机大战游戏就是游戏与JAVA编程语言相结合的例子。
从游戏的基本玩法出发,主要就是Heroairplane和Enemyairplane的对决,首先应该有个界面来装载整个游戏,然后就是Heroairplane的移动方式(鼠标移动或键盘移动),接下来就是Heroairplane子弹的生成,然后是Enemyairplane的出现方式,然后Enemyairplane的子弹生成,最后是Heroairplane与Enemyairplane的对战结果。
该游戏要满足以下功能性需求:
(1)游戏状态控制功能
游戏的状态控制包括运行、暂停、恢复及结束游戏,首先进入游戏的加载页面,在游戏进行时,你需要去做其他事情但又不想让游戏结束,你可以选择暂停游戏,当你忙完事情你可以选择恢复游戏,当游戏结束时会提示。
(2)游戏难度的调整
玩家越往后游戏的难度越高,敌机的数量越多、敌机的速度越快、敌机的子弹数量越多且越快。
(3)游戏界面绘画功能
在右上角显示游戏难度,当前游戏得分,与本机血条,游戏主屏主要用来输出用户对Heroairplane的控制与Enemyairplane的动作显示。
(4)玩家游戏控制功能
玩家可以通过控制鼠标或者键盘来控制友机的移动和友机子弹的发射。
1.4本文组织结构
文本的具体内容和组织结构简述如下:
第一章介绍了本文的研究及应用背景。
第二章介绍了设备平台的基本特征和软件开发环境的功能特性。
第三章主要进行了用户的需求分析,并根据分析结果采用面向对象的设计方法,对记事本软件进行了模块设计。
第四章主要实现了飞机大战游戏的功能模块,对核心功能做了集中阐述,对核心代码做了解释和说明。
第五章对实现的程序进行了模块测试和系统测试,评价了软件的功能,提出了软件的优点和不足。
2开发平台与开发技术
本章主要介绍软件开发平台如何选择,以及开发平台的合理配置。
本软件涉及到的开发平台是Eclipse,开发技术是JAVA技术。
下文详述了选择的理由和配置的方法。
2.1Eclipse
eclipse-galileo
Eclipse是一个开放源代码的、基于Java的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse附带了一个标准的插件集,包括Java开发工具(JavaDevelopmentKit,JDK)。
虽然大多数用户很乐于将Eclipse当作Java集成开发环境(IDE)来使用,但Eclipse的目标却不仅限于此。
Eclipse还包括插件开发环境(Plug-inDevelopmentEnvironment,PDE),这个组件主要针对希望扩展Eclipse的软件开发人员,因为它允许他们构建与Eclipse环境无缝集成的工具。
由于Eclipse中的每样东西都是插件,对于给Eclipse提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于Java开发工具。
尽管Eclipse是使用Java语言开发的,但它的用途并不限于Java语言;例如,支持诸如C/C++、COBOL、PHP等编程语言的插件已经可用,或预计将会推出。
Eclipse框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于Eclipse的应用程序的一个突出例子是IBMRationalSoftwareArchitect,它构成了IBMJava开发工具系列的基础。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
Eclipse项目IBM发起,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开放源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
随后还有包括Oracle在内的许多大公司也纷纷加入了该项目,Eclipse的目标是成为可进行任何语言开发的IDE集成者,使用者只需下载各种语言的插件即可。
2.2Eclipse平台
Eclipse是著名的跨平台的自由集成开发环境(IDE)。
最初主要用来Java语言开发,但是目前亦有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Eclipse的本身只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。
许多软件开发商以Eclipse为框架开发自己的IDE。
Eclipse最初由OTI和IBM两家公司的IDE产品开发组创建,起始于1999年4月。
IBM提供了最初的Eclipse代码基础,包括Platform、JDT和PDE。
目前由IBM牵头,围绕着Eclipse项目已经发展成为了一个庞大的Eclipse联盟,有150多家软件公司参与到Eclipse项目中,其中包括Borland、RationalSoftware、RedHat及Sybase等。
Eclipse是一个开发源码项目,它其实是VisualAgeforJava的替代品,其界面跟先前的VisualAgeforJava差不多,但由于其开放源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括Oracle在内的许多大公司也纷纷加入了该项目,并宣称Eclipse将来能成为可进行任何语言开发的IDE集大成者,使用者只需下载各种语言的插件即可。
2.3Java
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,JavaEE,JavaME)的总称。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
后来Sun公司被甲骨文公司并购,Java也随之成为甲骨文公司的产品。
Java是一种计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。
由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。
随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。
Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。
Java技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
Java编程语言的风格十分接近C、C++语言。
Java是一个纯的面向对象的程序设计语言,它继承了C++语言面向对象技术的核心。
Java舍弃了C++语言中容易引起错误的指针(以引用取代)、运算符重载(operatoroverloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。
在Java1.5版本中,Java又引入了泛型编程(GenericProgramming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。
Java不同于一般的编译执行计算机语言和解释执行计算机语言。
它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。
从而实现了“一次编译、到处执行”的跨平台特性。
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的运行效率。
平台无关性是指Java能运行于不同的平台。
Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。
使用Java编写的程序能在世界范围内共享。
Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。
Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。
Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。
Java对程序提供了安全管理器,防止程序的非法访问。
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。
类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。
程序员只需把主要精力用在类和接口的设计和应用上。
Java提供了众多的一般对象的类,通过继承即可使用父类的方法。
在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。
Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。
Java建立在扩展TCP/IP网络平台上。
库函数提供了用HTTP和FTP协议传送和接受信息的方法。
这使得程序员使用网络上的文件和使用本机文件一样容易。
Java致力于检查程序在编译和运行时的错误。
类型检查帮助检查出许多开发早期出现的错误。
Java自己操纵内存减少了内存出错的可能性。
Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。
并且Java还提供了Null指针检测、数组边界检测、异常出口、Bytecode校验等功能。
2.4Java语言的特点与优势
(1)平台无关性
平台无关性是指Java能运行于不同的平台。
Java引进虚拟机原理,并运行于虚拟机,实现不同平台的Java接口之间。
使用Java编写的程序能在世界范围内共享。
Java的数据类型与机器无关,Java虚拟机(JavaVirtualMachine)是建立在硬件和操作系统之上,实现Java二进制代码的解释执行功能,提供于不同平台的接口的。
(2)安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精髓。
Java舍弃了C++的指针对存储器地址的直接操作,程序运行时,内存由操作系统分配,这样可以避免病毒通过指针侵入系统。
Java对程序提供了安全管理器,防止程序的非法访问。
(3)面向对象
Java吸取了C++面向对象的概念,将数据封装于类中,利用类的优点,实现了程序的简洁性和便于维护性。
类的封装性、继承性等有关对象的特性,使程序代码只需一次编译,然后通过上述特性反复利用。
程序员只需把主要精力用在类和接口的设计和应用上。
Java提供了众多的一般对象的类,通过继承即可使用父类的方法。
在Java中,类的继承关系是单一的非多重的,一个子类只有一个父类,子类的父类又有一个父类。
Java提供的Object类及其子类的继承关系如同一棵倒立的树形,根类为Object类,Object类功能强大,经常会使用到它及其它派生的子类。
(4)分布式
Java建立在扩展TCP/IP网络平台上。
库函数提供了用HTTP和FTP协议传送和接受信息的方法。
这使得程序员使用网络上的文件和使用本机文件一样容易。
(5)健壮性
Java致力于检查程序在编译和运行时的错误。
类型检查帮助检查出许多开发早期出现的错误。
Java自己操纵内存减少了内存出错的可能性。
Java还实现了真数组,避免了覆盖数据的可能,这些功能特征大大提高了开发Java应用程序的周期。
并且Java还提供了Null指针检测、数组边界检测、异常出口、Bytecode校验等功能。
2.5java技术在游戏开发中的应用
(1)绘图技术
Applet程序中所采用的AWT的绘图机制主要涉及三个方法:
paint()方法、update()方法和repaint()方法,update()方法和paint()方法都有一个Graphics类参数。
Graphics是画图的关键,它可以支持两种绘图:
一种是基本的绘图,如:
画线、矩形、圆等;另一种是画图象,主要用于动画制作。
要进行绘图,首先要找到一个Graphics类的对象。
update()方法和paint()方法所传递的参数都是Graphics类的对象,因此主要是通过重载它们来进行绘图,这是在动画程序中经常使用的方法。
我们还可以通过getGraphics()方法得到一个Graphics类的对象,这个对象和update()方法和paint()方法中所传递的对象一样,都是该成员所对应的Graphics类的对象。
得到了Graphics类的对象,就可使用各种绘图方法。
Graphics中提供的图形绘制方法有:
paint():
进行绘图的具体操作,必须有程序员重写;
update():
用于更新图形,先清除背景、前景,再调用paint();
repaint():
用于重绘图形,在组件外形发生变化,即大小改变或位置移动repaint()方法立即被系统自动调用,而实际上repaint()方法是自动调用update()方法。
(2)游戏开发中的交互
一个优秀的游戏必定是与玩家不断的沟通,给予玩家充分的操作时间,而游戏又必须快速地,正确的对玩家的动作作出反映,否则这样的游戏,不能称为一个好游戏。
所以说,游戏开发中的交互与其他技术有着相同的地位,是一个游戏必备的核心。
在Java游戏的开发中,往往使用事件处理器来进行设计。
事件:
用户对程序的某一种功能性操作。
Java中的事件主要有两种:
组件类事件、动作类事件。
事件编程:
用户编程定义每个特定事件发生时程序应做出何种响应,并且这些响应代码会在对应的事件发生时由系统自动调用。
事件源是产出事件的组件。
监听器是对组件所产生的事件作出具体响应的代吗,即事件产出与处理分别由两个不同类加以编程实现。
事件处理机制是AWT组件自身不编程处理相应的事件,面是交由事件监听器处理。
事件适配器:
由于事件监听器接口是Abstract类型,意谓着实现该接口的类应全部实现其各个成员函数,但实际应用中可能只需处理某些事件响应代码;此时再采用实现事件监听器接口可能会导致编程复杂。
JDK中提供事件适配器方式来实现事件编程。
(3)基于AWT及SWING的游戏界面开发
抽象窗口工具包AWT(AbstractWindowToolkit)是API为Java程序提供的建立图形用户界面GUI(GraphicsUserInterface)工具集,AWT可用于Java的applet和applications中。
它支持图形用户界面编程的功能包括:
用户界面组件;事件处理模型;图形和图像工具,包括形状、颜色和字体类;布局管理器,可以进行灵活的窗口布局而与特定窗口的尺寸和屏幕分辨率无关;数据传送类,可以通过本地平台的剪贴板来进行剪切和粘贴。
AWT是Swing的基础。
Swing的产生主要原因就是AWT不能满足图形化用户界面发展的需要。
AWT设计的初衷是支持开发小应用程序的简单用户界面。
随着发展的需要,Swing出现了,Swing组件几乎都是轻量组件,与重量组件相比,没有本地的对等组件,不像重量组件要在它们自己的本地不透明窗体中绘制,轻量组件在它们的重量组件的窗口中绘制。
Swing是由100%纯Java实现的,Swing组件是用Java实现的轻量级(light-weight
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 飞机 大战 游戏 设计 实现