当前位置:文档之家› 坦克大战设计与实现

坦克大战设计与实现

目录1 绪论 (1)1.1 国内外单机游戏的研究现状 (1)1.2 研究意义 (2)2 开发环境和相关技术的介绍 (2)2.1 开发环境 (2)2.2 Java的特点 (3)2.3 关于Eclipse (5)3 系统的分析 (6)3.1可行性分析 (6)3.2需求分析 (7)4 系统功能及相关技术 (7)4.1 游戏功能 (7)4.2 游戏规则 (7)4.3 游戏界面和操作方式 (8)4.4 本程序需解决的有关技术问题 (8)4.5 相关技术的介绍 (9)4.5.1 关于JFrame (9)4.5.2 绘图技术 (9)4.5.3 事件监听机制 (10)4.5.4 关于多线程 (11)5 系统的总体设计 (12)5.1 TankWarClient.java (12)5.2 Tank.java (12)5.3 Bullet.java (13)5.4 Explode.java (13)5.5 Missile.java (13)5.6 Wall.java (13)5.7 Direction.java (14)6 系统的详细设计与实现 (14)6.1 游戏窗口与我的坦克 (14)6.1.1 窗口 (14)6.1.2 面板中加入坦克 (15)6.1.3 让坦克动起来 (17)6.2 坦克作战 (18)6.2.1 添加子弹、超级子弹类 (18)6.2.2 打出子弹 (19)6.2.3 将敌人坦克击毙 (19)6.2.4 爆炸效果 (20)6.3 系统优化 (20)6.4 坦克大战系统炮弹功能测试 (22)6.4.1 按CTRL打炮弹的测试 (22)6.4.2 功能测试图 (22)7 总结 (23)附录 (24)参考文献 (51)致谢 (52)1 绪论1.1 国内外单机游戏的研究现状近年来,因特网在国内迅速普及,导致了网络游戏的高速发展。

单机游戏市场呈现爆炸式的发展。

尤其是国内外巨大的个人电脑拥有量,更是让商家看到了商机,手机游戏市场利润将会十分丰厚。

面对潜力如此巨大的单机游戏市场,各游戏开发商、电脑生产厂商等都纷纷开始了各自的应战准备,以便抢占商机。

由于大部分人都对电脑操作都不是很熟悉,所以对于操作负责的网络游戏的推广有一定的影响,而单机游戏凭借自身操作简单、收费低廉、对电脑要求较低、有益身心等优点而较好推广,对于我国单机游戏而言,还处于起步阶段,有着较大的商业潜力,但是也存在着正版保护意识不强、利润较低等不利因素,还需要进一步的发展。

该游戏是一款以黑白机为平台的平面操作射击游戏,1名玩家可控制自己的坦克进行移动和射击,以保护总部为前提,歼灭对方为胜利目标。

每个关卡的地形不同,玩家可利用各种地形对敌人进行打击,并会得到补给。

两人配合游戏时,每一关都有不一样的战术,以便能顺利完成关卡目标,对于玩家来说大大加强了游戏乐趣。

其操作简单且娱乐性强,是一款男女老少皆宜的游戏。

游戏附带地图编辑器,玩家可自行编辑地图进行游戏。

游戏中的众多经典关卡至今还让许多玩家记忆犹新,在80年代时曾经在无数家庭中带来了无尽的欢乐。

Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。

本课题就是想对该游戏进行分析研究,借助于它的游戏规则,用java语言模拟开发一个类似的,功能相对简单的单机小游戏。

从而使自己更清楚的认识小游戏开发需要的知识和开发的环节和涉及到的领域。

同时本课题所用的知识为J2SE里面的知识,Java2平台包括:标准版(J2SE)、企业版(J2EE)和微缩版(J2ME)三个版本。

J2SE,J2ME 和J2EE,这也就是SunONE(Open NetEnvironment)体系。

J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入式系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。

您也许已经见过这样的报告,即一些新的 Java 语言变化包含易于开发性主题。

这些变化包括泛型、元数据、autoboxing、增强的 for 循环、枚举类型、静态导入、C 风格的格式化 I/O、可变参数、并发实用程序以及更简单的 RMI 接口生成。

JSR 201 包括如下四个语言变化:增强的 for 循环、枚举类型、静态导入和 autoboxing;JSR175 指定了新的元数据功能,而 JSR 14 则详细说明了泛型。

javac 编译器执行的默认语言规范是版本 1.4(并非最新版本)。

这意味着要利用以下语言变化的任何好处,需要向 javac 命令传递参数 -source 1.5。

1.2 研究意义单机游戏由于其不必连入互联网也可进行游戏从而摆脱了很多的限制,只需要一台计算机即可体验游戏,同时也可以通过多人模式来实现玩家间的互动,当今的很多单机游戏都是精工细做而成,更能呈现出较好的画面、优良的游戏性,相比网络游戏而言更有可玩性,游戏的种类更加丰富,各种游戏类型多不胜数。

但如果没有好的配置也可以玩一些不需要高配置的游戏。

单机游戏往往比网络游戏的画面更加细腻,剧情也更加丰富、生动。

在游戏主题的故事背景下展开的一系列游戏体验,往往给人一种身临其境的感觉。

而且很多发展至今已经有多部作品的单机游戏系列,大多都如电影般讲述了一个剧情波澜起伏的精彩故事,并且让玩家将自己融入到故事中,去闯荡属于自己的另一个世界,打造自己的史诗与传奇经历。

2 开发环境和相关技术的介绍2.1 开发环境操作系统:Microsoft Windows XP,Window7等程序语言:Java开发工具:MYEclipse6.52.2 Java的特点Java是一个广泛使用的网络编程语言,它是一种新的计算概念。

首先,作为一种程序设计语言,它简单、面向对象、不依赖于机器的结构、具有可移植性、鲁棒性、安全性、并且提供了并发的机制、具有很高的性能。

其次,它最大限度地利用了网络,Java的小应用程序(Applet)可在网络上运行而不受CPU和环境的限制。

另外,Java还提供了丰富的类库,使程序设计者可以很方便地建立自己的系统。

Java语言有下面一些特点:简单、面向对象、分布式、解释执行、鲁棒、安全、体系结构中立、可移植、高性能、多线程以及动态性。

(1)简单性Java语言是一种面向对象的语言,它通过提供最基本的方法来完成指定的任务,只需理解一些基本的概念,就可以用它编写出适合于各种情况的应用程序。

Java略去了运算符重载、多重继承等模糊的概念,并且通过实现自动垃圾回收,大大简化了程序设计者的内存管理工作。

另外,Java也适合于在小型机上运行,它的基本解释器及类的支持只有40KB左右,加了标准类库和线程的支持也只有215KB左右。

(2)面向对象Java语言的设计集中于对象及其接口,它提供了简单的类机制以及动态的接口模型。

对象中封装了它的状态变量以及相应的方法,实现了模块化和信息隐藏;而类则提供了一类对象的原型,并且通过继承机制,子类可以使用父类所提供的方法,实现了代码的复用。

(3)鲁棒性是什么叫做鲁棒性呢?这个名字是一个音译,其英文拼写为Robust。

也就是健壮和强壮的意思。

Java在编译和运行程序时,都要对可能出现的问题进行检查,以消除错误的产生。

它提供自动垃圾收集来进行内存管理,防止程序员在管理内存时容易产生的错误。

通过集成的面向对象的例外处理机制,在编译时,Java揭示出可能出现但未被处理的例外,帮助程序员正确地进行选择以防止系统的崩溃。

另外,Java在编译时还可捕获类型声明中的许多常见错误,防止动态运行时不匹配问题的出现。

(4)安全性用于网络、分布环境下的Java必须要防止病毒的入侵。

Java不支持指针,一切对内存的访问都必须通过对象的实例变量来实现,这样就防止程序员使用“特洛伊”木马等欺骗手段访问对象的私有成员,同时也避免了指针操作中容易产生的错误。

(5)体系结构中立Java解释器生成与体系结构无关的字节码指令,只要安装了Java运行时系统,Java程序就可在任意的处理器上运行。

这些字节码指令对应于Java虚拟机中的表示,Java解释器得到字节码后,对它进行转换,使之能够在不同的平台运行。

此外Java语言还有可移植性、解释执性、高性能、多线程、动态性等优秀特性。

(6)半编译半解释编译指一次性地将一个高级语言编写的源程序翻译成可以运行的目标程序,目标程序作为一个独立的文件可以多次运行。

虽然编译过程所需的存储空间很大,而且编译时间也较长,但目标程序执行时速很快,而且不需要多次翻译,所以此种方法适合于重复执行的程序。

解释指的是对高级语言编写的源程序翻译一句执行一句,翻译和运行交替进行。

如果想重新运行程序,则需要重新翻译,重新执行。

由于一边解释一边执行,且每次翻译都需要重新翻译,所以它的速度远底于编译型语言。

Java是半编译半解释的语言,一个Java程序想要运行,首先由Java编译器编译为字节码。

但字节码不是最终的可执行程序,它必须由系统上的字节码解释器将其翻译成机器语言。

虽然Java采用边解释边运行的方式,但由于字节码已经非常接近机器码,所以它的速度也是非常快的。

(7)性能优异与其他解释执行的语言不同,Java字节码的设计使它很容易将目标代码直接转换成对应于特定CPU的机器指令,从而得到较高的性能。

Sun用直接解释器一秒钟内可调用300,000个过程。

翻译目标代码的速度与C和C++没什么区别。

(8)动态性在Windows系统中,如果有多个应用程序要使用相同的函数时,计算机将这个函数加载到内存里,然后多个应用程序可以共同使用内存中的函数。

这样每一个应用程序就不需要在内存中复制相同的函数,动态链接节省了内存空间的使用。

Java的动态特性是它在面向对象设计方法上的扩展。

它允许应用程序动态的装入运行过程中所需的类。

虽然C++语言也是进行面向对象设计,但它是无法实现这种功能的。

在类库中可以自由的加入新的方法和实力变量而不会影响用户程序执行使Java更适合于一个不断发展的环境。

并且Java通过实现接口来支持多重继承,使它比严格的类继承具有更灵活的方式和扩展性。

2.3 关于EclipseEclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。

就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。

幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Tools,JDT)。

相关主题