基于J2ME坦克游戏的实现_第1页
基于J2ME坦克游戏的实现_第2页
基于J2ME坦克游戏的实现_第3页
基于J2ME坦克游戏的实现_第4页
基于J2ME坦克游戏的实现_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录 绪论11 课题总体介绍11.1课题介绍11.2课题背景11.3国内外概况21.4课题目的及意义31.5主要研究工作32 J2ME开发环境配置42.1 JAVA基本开发环境介绍42.2 JRE、JDK的安装42.3 J2ME开发平台的搭建(Eclipse+Java ME SDK 3.0)53 J2ME程序开发基本框架74 坦克游戏的实现84.1 主要功能需求84.2 主要对象实例分析84.3 程序主要流程84.4 程序主要结构94.5 主要实现方法及代码95 总结21基于J2ME平台坦克游戏的实现摘要 随着科技的不断进步,无线通讯事业的迅猛发展,作为人们主要通讯工具的手机在数量上正在与日俱

2、增,并且扩展功能亦日趋强大,同时人们对手机扩展功能的要求也不断增加。因此,在这一大环境下催生了移动设备嵌入式开发的兴起和快速发展。J2ME(Java 2 Micro Edition)正是SUN公司最新推出的面向嵌入式产品的JAVA技术。J2ME技术是开放的,它面向对象,功能强大,开发效率高,资源占用低,成为游戏应用开发的利器,被开发者所广泛使用。目前J2ME以其全面的功能,庞大的设备支持数量,广泛的应用成为嵌入式/移动应用平台的领先者。【关键词】嵌入式开发 手机 游戏 Tank Game Based on the J2ME PlatformAbstract With technological

3、 advances,the wireless communications industry developes rapidly, as a major communications tool for people's mobile phones are growing in number, and extensions are becoming more powerful, while expanding people's functional requirements for mobile phones also on the rise. Therefore, in thi

4、s great environment, gave birth to the rise of mobile devices, embedded development and rapid development. J2ME (Java 2 Micro Edition) is SUN's latest JAVA technology for embedded products. J2ME technology is open, it is object-oriented, powerful,high developing efficiency, low resource consumpt

5、ion, becoming an important weapon for mobile game application development widely used by developers. J2ME is currently becoming the embedded / mobile application platform king for its comprehensive functionality, and the large number of device support for wide range of applications .【Key words】Embed

6、ded Development Mobilephone Game24绪论 J2ME(Java 2 Micro Edition)是Java 2的一个组成部分,它与J2SE、J2EE并称。根据Sun的定义:J2ME是一种高度优化的Java运行环境,主要针对消费类电子设备的,例如蜂窝电话和可视电话、数字机顶盒、汽车导航系统等等。J2ME技术在1999年的JavaOne Developer Conference大会上正式推出,它将Java语言的与平台无关的特性移植到小型电子设备上,允许移动无线设备之间共享应用程序。J2ME在设计其规格的时候,遵循着对于各种不同的装置而造出一个单一的开发系统是没有意义的

7、事这个基本原则。于是 J2ME 先将所有的嵌入式装置大体上区分为两种 :一种是运算功能有限、电力供应也有限的嵌入式装置(比方说PDA、手机);另外一种则是运算能力相对较佳、并且在电力供应上相对比较充足的嵌入式装置 (比方说冷气机、电冰箱、电视机上盒 (set-top box)。因为这两种型态的嵌入式装置,所以Java 引入了一个叫做Configuration 的概念,然后把上述运算功能有限、电力有限的嵌入式装置定义在Connected Limited Device Configuration(CLDC)规格之中;而另外一种装置则规范为 Connected Device Configuratio

8、n(CDC)规格。也就是说, J2ME 先把所有的嵌入式装置利用Configuration 的概念区隔成两种抽象的型态。 J2ME技术是Sun公司于2000年推出的,伴随着移动通信的迅猛发展,短短数年内就占领了大多数主流手机终端。 J2ME技术对于非智能手机来说,具有非常重要的意义。因为智能手机有自己的操作系统(目前主要的手机操作系统有Plam、Symbian、Linux或者Windows Mobile),扩充性非常强。而一般手机要想扩展功能,目前来说,J2ME是最好的方式。 手机由于屏幕较小,键盘按键不够多等限制,使得其他类型的J2ME应用程序很难普及,只有Java游戏成了手机上最普遍的应用

9、。 1 课题总体介绍1.1 课题介绍基于J2ME的手机坦克游戏程序,利用手机的便携性和支持J2ME程序的扩展,通过对J2ME基本APIMobile Information Device Profile (MIDP) 2.1 (JSR 118)的应用,编制出类似家用游戏机上经典游戏坦克大战的J2ME版本。通过多线程技术将(用户)主控坦克,敌人坦克,炮弹分别采用独立的线程进行控制,并且具有可将游戏屏幕上地图里通过炮弹碰撞后消失的砖块,双方坦克具有生命值显示,同时敌方的坦克通过单独的线程进行控制并具有简单的人工智能,增加了游戏的趣味性,游戏的胜利与结束与双方坦克的生命值相关。游戏具有友好的用户界面,

10、操控简单,文件较小便于安装,且资源占用量小,采用单回合制不占用时间,便于闲暇时间游戏。1.2 课题背景 随着近年来科学技术的迅猛发展,计算机技术已近慢慢的向微型化、便携化等方向发展。如今,人们对于嵌入式的研究的深入,诞生了各种基于多功能操作系统的手机,使得这些手机上可以安装各种各样的软件,实现功能和性能上的扩展和提高。目前大部分手机分为智能手机(SmartPhone)和非智能手机。智能手机包括以诺基亚和三星手机为代表的Symbian S60操作系统,以摩托罗拉为代表的Linux操作系统,以多普达、HTC(宏达)为代表的Windows Mobile操作系统,还有最近兴起的基于Google操作系统

11、Android的新上市的手机。非智能手机包括诺基亚的S40平台、摩托罗拉早期的P2k平台等等。随着移动通信技术的发展和无线数据业务的进步以及人们对移动传播方式的日趋依赖,无线终端在人们日常生活中的使用也逐渐得到普及,手机已被赋予了除通话以外的其他许多功能。研究发现,在700 名受访对象中,60的人会在家中玩手机游戏,而且其中 60每天不止玩一次,每天的时间在 15 到 20 分钟。而诺基亚做的一项研究发现,玩家玩手机游戏的时间平均为 28 分钟。种种调查数据可以证明全世界手机游戏市场的繁荣,如今没有人会怀疑手机游戏的美好未来,全新的手机游戏领域已逐渐聚焦了众多软件开发商的目光。手机游戏的市场空

12、间进一步增大。在日本以及韩国,手机游戏已经贡献了大笔收;美国以及欧洲市场同样很乐观;而在南美洲以及其他国家和地区,市场规模也在不断扩大。1.3 国内外概况当JAVA平台发展到JAVA 2的版本以后,为了适应不同级别计算机硬件的开发需要,JAVA平台形成了三个主要分支: Java 2, Standard Edition(J2SE):是为台式机而设计的,主要运行在Linux, Solaris, 或Microsoft Windows等操作系统上。 Java 2, Enterprise Edition (J2EE):则是一个适合分布式的、多用户、企业级应用系统运转的平台。它以J2SE为基础,增加了处理

13、服务器端计算的功能。Java 2, Micro Edition (J2ME):和J2SE不同,它既不算是一个软件也不能算是一则规范。准确地说,J2ME是为了支持象PDA、手机等小型的嵌入式或移动设备而推出的一系列的技术和规范的总称。它借用了J2SE类库的一部分,使用了更少的API,而且其J2ME采用的JAVA虚拟机(JVM)比J2SE的JVM也要小得多。图1.3应该注意到,J2ME要支持的硬件平台也有很大差异,其中有比较高端的设备,例如电视机的机顶盒、网络电视等;也有比较低端的,象手机、寻呼机等。因此为了满足不同硬件的开发要求,J2ME规定了configuration的概念,Configura

14、tion对不同级别的硬件在所使用的JVM和基础API集合方面做了规定。于是,对于高端的设备,采用CDC(Connected Device Configuration),所使用的JVM称为CVM;对于低端设备,则采用CLDC(Connected Limited Device Configuration),所用的JVM为KVM(参见图1.3)。CDC和CLDC仅仅是对各类设备中最具共性的配置提供了基本的功能集合。但是,实际应用中,不同的设备之前存在着很大的差异。因此,我们在Configuration的基础上,又提出了Profile的概念。Profile规定的内容,是针对某一类设备所制订的规范和AP

15、I,有了Profile以后,才真正有了可以建立一个可运行J2ME应用程序的完整环境。移动信息设备Profile(Mobile Information Device Profile或MIDP)以CLDC为基础,它是第一个制订完成Profile,也是第一个可供使用的J2ME应用程序运行环境。本文中的内容也将主要围绕MIDP来展开。目前,支持MIDP,可以运行J2ME程序的设备已经有很多,根据ARC Group2002年六月的无线JAVA报告,“在2007年, 几乎所有的手持设备都将提供对JAVA的支持”,看来J2ME在未来的几年里仍然将持续升温。 在国外许多著名的游戏厂商开发J2ME游戏程序,例如

16、我们所熟知的艺电(EA)、世嘉(SEGA)、Gameloft等,他们开发了许多优秀的作品。同时在国内也有大量J2ME的游戏开发人员和游戏爱好者,他们不光开发了很多很有趣味的游戏还将许多PC机上的经典作品移植到了J2ME平台,大大增加了手机游戏的数量。开发者们通常通过在线的应用程序商店进行手机游戏的发布,比较著名的有苹果公司的AppStore(苹果在线应用商店),诺基亚公司的Ovi在线应用商店,在国内,比较著名的中国移动通信公司的“百宝箱”其实也是一个类似的在线商店,同时还有在建中的MobileMarket(移动商场),这些都为手机游戏的传播与普及手机游戏行业的发展起到了促进作用。1.4 课题目

17、的及意义手机游戏可以根据游戏本身的不同,而分成文字类游戏和图形类游戏两种。文字类游戏是以文字交换为游戏形式的游戏。这种游戏一般都是通过玩家按照游戏本身发给您的手机的提示,来回复相应信息进行的游戏。 图形类游戏更接近我们常说的“电视游戏”,玩家通过动画的形式来发展情节进行游戏。由于游戏采用了更为直观且更为精美的画面直接表现,因此图形类游戏的游戏性和代入感往往较文字类游戏高。因此广受玩家们的欢迎。 游戏作为人们日常生活的一个重要的娱乐项目,也带动了巨大的游戏相关产业市场的发展。游戏平台从游戏机、电视游戏,到pc游戏,到手机游戏,中间经历了很多的技术的变革。随着新技术的发展和人们生活水平的提高,手机

18、开始逐渐普及,手机以其小巧便捷,方便的特性成为人们的必备通讯工具。而基于手机平台的手机游戏也就拥有了巨大的市场空间,随着3g的开通和应用,手机游戏必将迎来新的一轮游戏热潮! 1.5 主要研究工作本课题研究的是基于J2ME的手机坦克游戏,利用EclipseIDE工具和Sun Java ME SDK 3.0,JAVA语法和J2ME系统的API来实现。主要研究的对象是: 1.面向对象的编程技巧; 2.J2ME的低级、高级界面的开发; 3.J2ME内专门游戏开发包Game包的使用 4.多线程技术的应用; 5.简单人工智能的实现。2. J2ME开发环境配置软件开发环境(SDE,Software Deve

19、lopment Environment),是支持某种软件开发方法或者与某种软件加工模型相适应的一组相关软件工具的集合,在欧洲又叫集成式项目支援环境(IPSE,Integrated Project Support Environment)。2.1 JAVA基本开发环境介绍Java包含了一种计算机编程语言和一个平台。Java编程语言是一种高级语言。由Sun微系统公司(Sun Macrosystem)发布,并作为一种开放的标准进行提供。Java平台包括了Java虚拟机和Java应用程序接口(API)。 Java将原程序编译成字节码(bytecode),并通过Java虚拟机(JVM)解释字节码的方式来

20、执行。因为这种运行方式,只要针对不同的计算机平台准备相应的Java虚拟机,就可以很方便的实现Java语言的跨平台性。因此,Java非常适合于企业网络和Internet环境,现在已成为Internet中最受欢迎、最有影响的编程语言之一。 Java有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。 开发JAVA程序通常要使用Sun公司的JDK开发工具包和JRE虚拟机环境。JDK(Java Development Kit)是Sun Microsystems针对Java开发员的产品。自从Java推出以来,JDK已经成为使用最广泛的Jav

21、a SDK。JDK 是整个Java的核心,包括了Java运行环境,Java工具和Java基础的类库。从SUN的JDK5.0开始,提供了泛型等非常实用的功能,其版本也不断更新,运行效率得到了非常大的提高。 Java平台根据API和使用领域,主要分为三种技术: (1)Java SE (旧称J2SE) - Java Platform, Standard Edition, 定位在客户端,主要用于桌面应用软件的编程; (2)Java EE (旧称J2EE) - Java Platform, Enterprise Edition, 定义在服务器端Java2的企业版,主要用于分布式的网络程序的开发,如电子商

22、务网站和ERP系统; (3)Java ME (旧称J2ME) - Java Platform, Micro Edition, 主要应用于嵌入式系统开发,如手机和PDA的编程。JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库。JRE包括两部分:JavaRuntimeEnvironment和JavaPlug-inJavaRuntimeEnvironment(JRE)是可以在其上运行、测试和传输应用程序的Java平台。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具-编译器、调试

23、器和其它工具。JRE需要辅助软件-JavaPlug-in-以便在浏览器中运行applet。2.2 JDK、JRE的安装与配置本课题开发选用的桌面操作系统为微软Windows系统。首先通过浏览器访问Sun公司的Java SE Downloads页面:目前最新版为JDK 6 Update 18,然后安装下载到得可执行文件,安装包中自带JRE,在安装JDK的过程中一并进行安装。安装完成后按如下操作进行JDK的配置: 在“系统变量”中,设置3项属性,JAVA_HOME,PATH,CLASSPATH(大小均可)。若已存在则点击“编辑”,不存在则点击“新建”。 JAVA_HOME指明JDK安装路径,既刚才

24、安装时所选择的路径,此路径下包括lib,bin,jre等文件夹(此变量最好设置,因为以后运行tomcat,eclipse等都需要依靠此变量)。 在“系统变量”框中选择“Path”,然后单击“编辑”按钮,在出现的“编辑系统量”对话框中,设为:%JAVA_HOME%bin; %JAVA_HOME%jrebin;用同样方法设置环境变量“classpath”,其值为.;%JAVA_HOME%libdt.jar;%JAVA_HOME%libtools.jar。(“.”表示当前路径) 设置完成后,单击“开始”“所有程序”“附件”“命令提示符”打开DOS 窗口,在命令提示符下输入“java”或“javac”

25、,回车后,如果出现其用法参数提示信息,则安装正确。2.3 J2ME开发平台的搭建(Eclipse+Java ME SDK 3.0)本课题采用的IDE(Integrated Development Environment)工具是IBM公司旗下的Pulsar-Eclipse.Pulsar-Eclipse是专门针对移动设备开发进行优化的IDE,在Eclipse的官方网站Pulsar的下载页面上/pulsar/ 下载它的压缩包文件,完成后直接解压,双击eclipse可执行文件即可运行。开发J2ME程序需要到专门针对J2ME应用程序开的开发包Java ME SD

26、K 3.0,访问安装完Java ME SDK 3.0后需要与Eclipse-Pulsar建立关联,即向Pulsar中导入Java ME SDK 3.0。具体操作如下:在Pulsar中点击Window-Preferences图2.3-1在弹出的窗口中选择Java ME-Device Management图2.3-2 点击右侧的Import按钮,会弹出导入窗口,按下Browse找到Java ME SDK 3.0的安装目录,选中,点确定即可实现导入,如下图图2.3-3最后,勾选DefaultCldcPhone1作为默认模拟设备,点击OK,整个J2ME开发平台就此搭建完毕。3 J2ME程序开发基本框架

27、 框架,相当于程序的基础结构,通过框架程序员可集中精力完成系统的业务逻辑设计。而且框架一般是成熟,稳健的,可以处理系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。 当我们新建一个MIDlet项目和源文件的时候,需要的基本框架如下:public class a extends MIDletpublic a()protected void destroyApp(boolean unconditional)throws MIDletStateChangeException/ TODO Auto-generated method stubprotected void pauseApp()p

28、rotected void startApp() throws MIDletStateChangeException每一个J2ME的MIDlet程序都需要一个主类,就是MIDlet类,继承超类MIDlet,这个类相当于主程序所整个流程开始的类,里面有3个需要重写的方法:destroyApp、pauseApp、startApp。startApp是当J2ME程序开始的时候所执行的入口方法当程序开始运行的时候,在MIDlet主类的构造方法调用之后就会立即运行这个方法,需要说明的是,MIDlet构造函数在整个程序的生命周期里面都只执行一次,而startApp则不是。startApp方法当从外部接受到暂

29、停的指令的时候,会暂时跳出,当外部恢复的时候,程序会再次执行startApp。pauseApp是当程序通过外部命令暂停的时候,比如支持J2ME的手机按退出键的时候,会选择关闭程序或者暂停程序,当选择了暂停程序,程序会立即跳到pauseApp,这个时候,我们可以在pauseApp方法中释放一些资源,节省手机的内存空间,而且还要把程序必要的数据保存下载,当再次恢复进入startApp方法的时候,就需要读取之前保存的必要数据来恢复现场。destroyApp是当程序正常退出的时候,比如通过程序的退出菜单、执行了退出命令的时候降被调用。在destroyApp方法中我们可以释放所有的资源,关闭所有的连接(

30、包括文件和网络连接),保存数据到数据集等等。这样可以使程序正常的退出并且保存必要的内存数据机的Flash存储器中。J2ME的MIDlet主类为我们提供了一套完整的程序运行控制方法,通过遵循这样一种结构,便于我们对J2ME的开发和运行的控制。4 坦克游戏的实现 本章主要内容为坦克游戏的实现方法及主要代码截图,此次论文所设计的坦克主要模拟家用FC游戏机上的经典游戏坦克大战,程序借助于Java语法和面向对象的编程思想来实现坦克游戏的J2ME手机版本。4.1 主要功能需求(1)程序运行设备环境:Java ME MIDP2.0,屏幕分辨率240*320;(2)程序启动显示程序主选择菜单:开始游戏,关于,

31、退出;(3)游戏包括地图,双方坦克,炮弹,生命值元素;(4)用户主控制坦克移动、发射炮弹通过按键自由控制,敌方坦克通过编程进行移动 和发射炮弹的控制;实时显示双方坦克生命值的变化,以不同的颜色进行区分; (5)炮弹击中地图上的障碍物后,障碍物消失;击中坦克后,坦克生命值减一; (6)用户主控坦克生命值为0时,游戏结束;敌方坦克生命值为0时,游戏胜利。4.2 主要对象实例分析(1)程序主菜单画布对象(Canvas);(2)游戏界面游戏画布对象(GameCanvas);(3)游戏地图砖块图层对象(TiledLayer);(4)用户主控坦克游戏精灵对象(Sprite);(5)敌方坦克游戏精灵对象(S

32、prite);(6)炮弹游戏精灵对象(Sprite);(7)关于界面表单对象(Form);4.3 程序主要流程图4.34.4 程序主要结构 图4.44.5 主要实现方法及代码首先新建MIDlet Project工程文件Rst-Tank,新建包tank,根据结构,分步进行设计。 (1)主菜单界面设计 主菜单是Canvas类的对象,因此新建类MenuCanvasy继承Canvas类,并应用CommandListener接口用以按键响应。通过Canvas类的成员方法paint进行界面的绘制,主要用以绘制游戏名字及游戏主题文字。主菜单的选项选用一张制作好的图片资源进行载入,然后通过在屏幕上绘制矩形框来

33、显示当前的选择状态,矩形框内图片上的文字即为当前所选内容,通过设定一个整型变量index以它的数字来判断当前所选的选项。主要代码如下:图4.5-1图4.5-2用户通过手机的导航键的上、下键来控制矩形选择框的位置,同时index标记也发生响应的变化,导航键的中键按下,即选中当前选项。通过keyPressed函数来来获取按键值,响应按键事件。主要代码如下:图4.5-3(2)关于的界面设计关于界面是Form类的对象,因此新建一个类AboutForm。考虑到用户在阅览完毕后的选择,因此要应用按键监听接口CommandListener。关于界面的主要显示内容是关于程序的有关信息,因主要是文字信息,用St

34、ringItem对象来显示较佳。主要代码如下:图4.5-4(3)游戏界面设计J2ME为方便手机游戏的开发从MIDP2.0开始新加入了专门针对游戏开发的包Package javax.microedition.lcdui.game,这个包提供了以下类:图4.5-5GameCanvas较Canvas类功能更强大,GameCanvas可直接操纵画笔,绘制屏幕更直接,操控性更强。TiledLayer类具有先天的优势用以绘制游戏地图,它不仅提供了图片在屏幕上的显示,更可对整幅图片资源进行分割提取其中的部分图片使用。LayerManager类主要用以管理图层,对多图层的管理和控制提供了便利。以上三个类的优势

35、突出,充分利用这三个类为游戏主界面的开发提供了便利。新建游戏的主界面SPGameCanvas类继承GameCanvas,实例化一个静态TiledLayer对象tlmap用以绘制游戏地图,主要代码如下:图4.5-6图4.5-7游戏地图,地图图片资源的载入通过定义TiledLayer类型的函数createMap来进行详细的绘制,主要代码如下:图4.5-8 显示坦克,采用一个制造坦克的函数来显示坦克,即将坦克精灵类进行实例化,然后通过LayerManager图层管理器显示到屏幕上来,主要代码如下:图4.5-9图4.5-10坦克控制,用户通过手机的导航键来控制方向,通过手机的游戏确认键来发射炮弹(由于

36、不同的手机厂商所指定的J2ME标准有细微差异,故游戏确认键可能是导航键中键,也有可能是数字键5)。在主控坦克控制函数里,首先获取按键键值,因为J2ME所定义的游戏按键与普通按键有所差异,所以选用GameCanvas类的成员方法getKeyStates来获取按键键值效果较佳。用选择结构来对不同的按键进行响应,控制按键包括方向按键和发射炮弹按键,按键后分别向坦克精灵类传递方向,速度等参数,考虑到操控性,在每个方向选择分支中再嵌套一个发射炮弹按键的判断,主要代码如下:图4.5-11图4.5-12碰撞检测,在主游戏画布类中,主要检测三种碰撞情形:用户主控坦克与地图障碍物的碰撞,敌方坦克与地图障碍物的碰

37、撞,主控坦克与敌方坦克的碰撞。用户坦克与地图碰撞后则停止继续向前移动;敌方坦克碰撞到地图后则采取转换方向操作;双方坦克碰撞时则重置两坦克到初始位置,主要代码如下:图4.5-13游戏状态显示,用来实时显示当前用户主控坦克和敌方坦克的生命值,并对游戏的结果进行判断,主要代码如下:图4.5-14游戏屏幕的线程控制,主要用以控制按键响应,碰撞检测,游戏状态,主要代码如下:图4.5-15(4) 用户主控坦克类设计J2ME的游戏包中,Sprite类提供了相当实用的游戏角色控制的成员方法,这里主要应用到的设置悬挂点(defineReferencePixel,setTeferencePixel),设置旋转角度

38、(setTransform),因此用户主控坦克类CTankSprite继承Sprite类作为其对象,同时加入新成员变量:坦克坐标,保持的方向,保持的速度作为碰撞后停止的相抵消的变量,以及一个炮弹类对象实例。主要代码如下:图4.5-16考虑到坦克与炮弹之间的关联,定义一个公共的炮弹类的实例CTMissile来引用后,通过制造炮弹函数进行初始化,代码如下:图4.5-17坦克的方向、停止、移动操作通过Direction、Stop、CTMove三个函数来完成,主要代码如下:图4.5-18(3) 敌方坦克类设计敌方坦克与用户主控坦克类似,也继承Sprite类,敌方坦克的方向控制、移动控制和炮弹的设置方法

39、与主控坦克基本相同。由于敌方坦克是不受用户操控的,因此需要利用单独的线程来对它进行控制。为了增加游戏的趣味性和真实性,需对敌方坦克引入简单的人工智能,即在检测到敌方坦克与其他元素发生碰撞时所采取的操作,这一操作通过一个转向函数来完成。转向函数的具体操作步骤为:首先当碰撞函数响应后为“true”后,调用转向函数,转向函数通过当前方向变量的值来判断当前方向,然后对方向变量赋予新值,实现转向操作。在此设定的转向操作为:图4.5-19 通过线程来实现对敌方坦克的操作,代码如下:图4.5-20(4) 炮弹类的设计炮弹的主要功能是与其他元素进行碰撞,同样炮弹类也作为易于进行碰撞检测的Sprite类的对象,

40、因此新建一个炮弹类,继承Sprite类。并且,炮弹一旦经由坦克发出即不再与坦克相关,因此将炮弹类继承Runnable接口用独立的线程来控制较佳。炮弹作为一个独立运动的元素应具有运动方向和运动速度,只是它的方向与发射炮弹的坦克当前运动的方向时一致的,因此可新建一个成员函数来与坦克类中的参数进行参数的传递,为保持参数相关的统一性可把坦克对象的坐标、方向、速度、标记参数一并传递进来以供使用。主要代码如下:图4.5-21根据炮弹的运动规则,由坦克的正方向发出,并且一旦发生碰撞,炮弹应当即销毁。同理,当触发发射炮弹函数时,炮弹的线程开始,当炮弹发生碰撞,炮弹线程终止。主要代码如下:图4.5-22 当炮弹碰撞到坦克时,要判断坦克碰撞到是哪方坦克。若碰到用户主控坦克,则主控坦克的生命值减一;若碰撞到敌方坦克,则敌方坦克生命值减一。然后将被炮弹击中方的坦克。当双方坦克中有一放生命值减为0,则要结束游戏并判断游戏结果。主要代码如下:图4.5-23(5) 主MIDlet类的设计主MIDlet主要承担程序的宏观控制,主要用以控制主菜单界面、游戏界面、关于界面的切换,实现这一功能只需在MIDlet类中实例化以上三个类,这样来引用可降低以上三个类之间的

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论