您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 基于J2ME的坦克大战的设计与实现(完整版)
1目录第一章引言.........................................................1第二章开发环境、相关理论和可行性分析...............................22.1游戏的开发环境...............................................22.2相关理论与技术..............................................22.3可行性分析..................................................2第三章需求分析.....................................................33.1系统的主要功能...............................................33.2功能上需解决的技术问题.......................................3第四章概要设计.....................................................5第五章游戏的详细设计与实现.........................................65.1游戏所包含的类及类与类之间的关系.............................65.2游戏中关键类的详细设计.......................................9第六章游戏的运行与测试............................................146.1测试方案...................................................146.2测试项目...................................................14参考文献...........................................................192基于J2ME的坦克大战的设计与实现摘要:随着手机的日益普及,Java在移动设备上的实现、Java程序产生的手机增值服务逐渐体现出其影响力。Java对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。本论文基于J2ME技术的基础上,开发了一款可商用的手机游戏程序——坦克大战。程序的界面和运行方式继承了日本任天堂公司20世纪80年代开发的游戏BattleCity。关键词:J2ME,手机游戏,Java,坦克大战1第一章引言J2ME是一种程序语言,是一种高度优化的Java运行环境,是为移动电话和PDA之类的嵌入式消费电子设备提供的Java语言平台。其利用的开发工具主要有Eclipse和NetBeans两种,同时也是最常用的两种,由于其适用平台从以前的电视机、PC等转换到如今十分流行的手机中来,使以手机为平台的应用类软件拥有巨大的市场空间,随着3G的开通和应用,使得手机类应用程序迎来新的热潮,使其发展前景十分的可观。随着移动通讯技术的发展和无线数据业务的进步,手机游戏已经不再是一个无关紧要的附属品了。从文本信息到多媒体内容,从2.5G网络到呼之欲出的3G时代,全新的手机游戏领域已逐渐聚焦了众多软件开发商的目光,使得游戏开发者和游戏玩家共同面临着一个令人振奋的游戏新世界。Java良好的跨平台特性在移动平台的开发中显示出了巨大的威力。Java语言面向对象的优势也使得开发游戏变得非常容易。手机在当今社会上的地位已经不再是普及的问题,同时Android继承java的同时发挥了拓展了大量自身的优势,其开源性更是使其在手机市场上迅猛的占据着绝对优势,在这样的恶劣环境中,java以其跨平台、面向对象、健壮性、良好的稳定性能、开发周期短等等优势捍卫者自己的市场,因此不论是在传统的手机还是在现在风靡全球的Android手机上都少不了java的运行环境和大量的java程序。2第二章开发环境、相关理论和可行性分析2.1游戏的开发环境操作系统:MicrosoftWindowsXP程序语言:Java2开发包:JDK5.0Java(TM)2StandardEditionsun_java_wireless_toolkit-2.5.2_01IDE:Eclipseeclipse-SDK-3.7(插件:eclipseme.feature_1.7.9_site)2.2相关理论与技术本系统在设计方面做了很大的改观,为未来的长久安全的使用做了大量的准备工作,对于任意一款软件的开发,应用才是重中之重,所以本着实用的基本原则,本系统以J2ME语言为基础在手机等支持Java语言的电子设备平台上实现主要功能,以eclipse为开发平台主要以MIDLet、Canvas和RMS等主要技术为支持,该查询系统不仅用到了上述方面的知识同时对RMS数据库的知识也要有一些比较清晰的了解,增加系统完成的可能性。2.3可行性分析技术可行性:本游戏对画图、屏幕刷新的要求,对运算的要求,对线程的要求(同时也只需要十个左右的线程),都算是处于手机移动平台能够处理的水平;同时我们能看到很多的成功的例子,就像经典版的坦克大战。很显然,技术上是可行的。经济可行性:本游戏的开发主要在于完成毕业设计,不注重直接的经济效益与其后的发展方向,只在注重自身的水平提高,对自身的经济要求也不高,只需要有一台能运行相应J2ME程序的电脑便可,所以基本不用考虑经济上的问题。社会可行性:本游戏的开发主要目的是为了完成毕业设计,开发的主体是个人,不存在法律上面的侵权行为,也不会对社会造成影响,在这方面也是完全可行的。3第三章需求分析3.1系统的主要功能坦克大战是一款经典的游戏,本游戏在学习继承前辈的同时,尝试性的进行一些创新;下面是对系统主要功能的简要概述。整体上说,本游戏分为敌我双方,有八个关卡,主战坦克有玩家控制,敌方坦克能够智能化的运行。1玩家的控制游戏打开的时候,玩家可以选择关卡,然后进入游戏,玩家可以通过上下左右键控制坦克的运行,可以通过中间的键控制坦克打出炮弹,当坦克打中敌方坦克,子弹和地方坦克都死亡。游戏过程中,玩家可以暂停游戏,然后开始游戏,还可以退出到前面的界面。当一关的所有敌方坦克都死亡,则进入下一个关卡。2敌方坦克的智能运行敌方坦克是有一系列的随机数控制的,不仅能够智能运行,还能智能打出炮弹,当打中主战坦克时,主战坦克的生命值自动减一,同时回到初始化是的位置。3子弹的运行主战坦克是有玩家控制打出的,敌方坦克是随机打出的,只有当子弹不属于同一方是子弹与坦克的碰撞才有效。当子弹打到墙壁和屏幕的边缘时,子弹也会消失。4关卡的设置第一次玩游戏时,只有第一关是被解锁的。也就是只有第一关能玩。其他的关卡需要玩家解锁。只有玩家过了前面的关卡,随后的那个关卡才会被自动解锁。这种实现是用RMS完成的,所以退出游戏,下次进入游戏时已经被解锁的关卡仍然处于被解锁的状态。3.2功能上需解决的技术问题1.游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。2.游戏中为了美观和适用性强,就需要采用外部文件引入的png图片,有关贴图,在MIDP2.0中提供了用于增强游戏功能的game包,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。这里应当减少手工画图,从而是程序能更高效的运行。3.己方坦克的运行可以通过监听键盘控制,但由于敌方是自动运行,就需要有较强的智能性;同时,屏幕上的敌方可能会有较多的数量,这需要为每个敌方开辟一个线程以便能让其独立运行。还需要在坦克死亡的时候终止线程。Java的多线程能力为实现这样的游戏提供了可能。敌人坦克的运行算法也需要进行适当的设置,以免游戏过于简单,单调,或者过于繁杂。4.对于双方坦克发出的子弹的控制也需要对其跟踪控制,为了避免子线程太多的现象,子弹不应当成为独立的线程。这里就需要一个单独的线程来控制子4弹,或者是由子弹所属的坦克来控制子弹。这需要对所有的对象有较好的控制。另外,子弹在运行过程中也需要实时扫描是否碰撞到了相关障碍物或屏幕边界。如果子弹由产生自己的坦克控制,就需要特别这一子弹类和坦克类之间的关系。5.碰撞检测是坦克大战的最重要的环节之一。双方的坦克在运动过程中需要考虑到是否碰撞到墙壁、屏幕边缘、子弹或对方坦克,以免重叠运行,造成许多逻辑上不可能的情况。每一次刷新页面、每一次的移动都要考虑整体以及个体与个体的变化。6.游戏的结束、开始、动态信息画面作为构成一个完美程序都是必不可少的重要部分。良好的用户界面更是吸引用户的硬指标,相关的美术构图也需要有一定的考虑。7.游戏地图放在一个专门的类中,这个类中存储代表地图的二维数组。地图的选择也就是对这个类中的二维数组的选择。8.用户运行游戏时需要有分数记录的可能。如何采用合理的记分标准,需要进行适当的设计。记录分数的存储方式也需要有较好的解决方案。手机中由于处理器和内存空间、存储空间都十分有限,其数据库系统与普通PC大相径庭。其数据库结构较为简单,被称之为RMS系统。9.Java是基于虚拟机的半解释型编译系统,其执行效率较C++等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器(Obfuscator)进行程序打包后的优化。5第四章概要设计程序的入口是继承了MIDlet类的TankMIDlet类,运行后会进入一个List,也就是一个选择界面。有两个选项,一个选项是对游戏操作的详细说明,另一个是一个选择关卡的List。玩家可以选择查看游戏说明,然后确定返回到上层的选择界面,玩家也也可以直接选择关卡。当玩家选择了已破解的关卡后就可以顺利的进入游戏的主界面开始游戏了,如果关卡未破解,屏幕的上方会有提示信息显示此关未破解,这时就需要玩家重新选择了。主程序中,系统会自动的收集变化的参数,不停地重新初始化,重新绘制屏幕,这些都是有MIDlet和线程完成的。玩游戏的过程中,玩家可以选择暂停游戏,然后可以继续游戏,玩家还可以返回选择界面。TankCanvas主管着类之间的协调,决定何时死亡,合适打出炮弹,何时显示游戏结束后的Gameover字样。它运行于独立的线程中,以恒定的频率刷新画面。为了是程序更清晰,程序中将主战坦克与敌方坦克作为一个类,用一个变量isEnemy来区别是主战坦克还是敌方坦克。所有的坦克类均在TankCanvas中建立了对象,初始化由initialTanks()方法完成,也便于统一调度。TankCanvas中有一个drawAll()方法,这样所有的屏幕绘制都只需调用这个方法。如图4.1是整个游戏程序的流程图:图4.1设计流程图N开始敌人数量0?主战坦克死亡?下一关最后一关显示GAMEOVER结束NNYYY6第五章游戏的详细设计与实现5.1游戏所包含的类及类与类之间的关系本程序采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单,在开始游戏后将先从外部文件载入地图文件,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而步进。敌方坦克将在游戏开始时逐渐新增线程,每增加一个敌方对象就新增加一条线程,当敌方坦克的数量为零,下一个关卡被自动解锁,程序自动进入到下一个关卡。所有的子弹都放在一个定制的Vector的子类MyVector容器中。在屏幕重绘的主程序中,将在每次的循环中判断若干事件
本文标题:基于J2ME的坦克大战的设计与实现(完整版)
链接地址:https://www.777doc.com/doc-2570119 .html