【Jsp精品源码栏目提醒】:本文主要为网学会员提供“坦克大战设计与实现 - 毕业设计”,希望对需要坦克大战设计与实现 - 毕业设计网友有所帮助,学习一下!
大 连 民 族 学 院 本 科 毕 业 设 计(论 文) 坦克大战游戏 学 院(系): 专 业: 网络工程 学 生 05084328 指 导 教 师: 评 阅 教 师: 完 成 日 期: 大连民族学院 摘 要 随着信息技术的飞速发展,计算机的使用也日渐普及,本文从实际应用出发,向大家介绍坦克大战游戏。
Java 良好的跨平台特性在移动平台的开发中显示出了巨大的威力。
Java 语言面向对象的优势也使得开发游戏变得非常容易。
本论文介绍了坦克大战的历史、java 的相关技术及本程序的结构分析和具体功能的实现。
游戏是在 Eclipse3.2 环境下编程。
它的主要功能有: 1. 能够四处移动 2. 能够发射子弹打击敌人 3. 敌人能够移动 4. 能够模拟爆炸 5. 能够产生障碍 6. 能够增长生命关键词:java;坦克大战 智能 intelligence Abstract With the rapid development of information technology computer use hasbecome more popular the practical application of this article from start to tell youabout Tankewar Design and Implementation of the game. Good cross-platform Java features in the development of mobile platforms hasshown significant effectiveness. Java language advantages of object-orienteddevelopment also makes the game very easily. This paper describes the history of Tankewar java technologies and the processof structural analysis and the realization of specific functions. The game environmentin Eclipse3.2 programming. Its main features are: 1. Be able to move around 2. To launch a bullet against the enemy 3. The enemy can move 4. Can simulate the explosion 5. Can produce the barriers 6. Can increase the lifeKey Words:Java;tankwar; intelligence摘 要........................................................................................................................2Abstract ..........................................................................................................................3一 绪论..........................................................................................................................51.1 课题背景和研究意义.............................................................................................51.2 国内外的研究现状和发展趋势.............................................................................5二 开发环境和相关技术的介绍..................................................................................62.1 开发环境..................................................................................................................62.2 Java 的特点 .............................................................................................................62.3 关于 Eclipse............................................................................................................8三 概要设计..................................................................................................................93.1 游戏功能.................................................................................................................93.2 游戏规则.................................................................................................................93.3 游戏界面和操作方式.............................................................................................93.4 本程序需解决的有关技术问题...........................................................................10四 系统详细设计........................................................................................................124.1 游戏窗口...............................................................................................................124.1.1 生成游戏窗口....................................................................................................124.1.2 窗口的属性........................................................................................................124.2 坦克.......................................................................................................................134.3 双缓冲的应用.......................................................................................................194.4 炮弹.......................................................................................................................214.5 爆炸.......................................................................................................................254.6 设置障碍物...........................................................................................................26五 坦克大战游戏实现................................................................................................295.1 主要程序介绍.......................................................................................................295.2 程序主要运行过程...............................................................................................295.2.1 程序中炮弹的运行和流程................................................................................295.2.2 敌方坦克运行流程............................................................................................31六 总结........................................................................................................................32参考文献......................................................................................................................33致 谢......................................................................................................................34一 绪论1.1 课题背景和研究意义 如果要从
精品云集的 FC 游戏中找一款经典之作,《坦克大战》绝对是FC 上所有经典中的经典,当年 NAMCO 的《Battle City》在国内又称《坦克大战》,以其极为出色的游戏性令全球众多玩家为之疯狂。
该游戏是一款以红白机为平台的平面操作射击游戏,1-2 名玩家可控制自己的坦克进行移动和射击,以保护总部为前提,歼灭对方为胜利目标。
每个关卡的地形不同,玩家可利用各种地形对敌人进行打击,并会得到补给。
两人配合游戏时,每一关都有不一样的战术,以便能顺利完成关卡目标,对于玩家来说大大加强了游戏乐趣。
其操作简单且娱乐性强是一款男女老少皆宜的游戏。
游戏附带地图编辑器玩家可自行编辑地图进行游戏。
游戏中的众多经典关卡至今还让许多玩家记忆犹新,在 80 年代时曾经在无数家庭中带来了无尽的欢乐。
Java 语言是当今最为流行的程序设计语言之一 作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用 Java 语言,不仅可以开发出功能强大的大型应用程序,而且 Java 语言本身突出的跨平台的特性也使得它特别适合于 Internet上的应用开发,可以这样说,Java 的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。
本课题就是想对该游戏进行分析研究,借助于它的游戏规则,用 java 语言模拟开发一个类似的,功能相对简单的网络小游戏。
从而使自己更清楚的认识小游戏开发需要的知识和开发的环节和涉及到的领域。
1.2 国内外的研究现状和发展趋势 从 1980 年第一款坦克大战游戏 Battle City 诞生至今已有 29 年的历史了,坦克大战也发展出了很多版本,从最初的红白游戏机到现在的网络游戏,从最开始只支持双人游戏到现在支持多人网络对战,从当初的平面 2D到现在的立体 3D 游戏,坦克大战趋势是网络化,立体化和多样化。
网络化的市场让游戏变成人和人的交战,而不是人和电脑的对战,这样可以增加游戏的难度,游戏的时间和游戏的寿命.。
立体化是为了适应现在越来越 3D的趋势,游戏有必要做的更加的完善,趋向 3D 并且加重环境描写.。
多样化则是增加游戏的任务,游戏的耐玩性而在坦克大战里增加更多的内容加大其可玩性,比如:装备,道具,对战方式,任务合作模式等等。
可以想像,如果坦克大战还是人机对战的模式,并且协作性不提高的话,玩家对该游戏的选择性将大大降低,最终成为历史。
二 开发环境和相关技术的介绍2.1 开发环境 操作系统:Microsoft Windows XP 程序语言:Java 开发工具:Eclipse3.22.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 关于 Eclipse Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。
就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java DevelopmentTools,JDT)。
虽然大多数用户很乐于将 Eclipse 当作 Java IDE 来使用,但 Eclipse 的目标不仅限于此。
Eclipse 还包括插件开发环境(Plug-in DevelopmentEnvironment,PDE),这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。
由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。
这种平等和一致性并不仅限于 Java 开发工具。
尽管 Eclipse 是使用 Java语言开发的, 但它的用途并不限于 Java 语言; 例如,支持诸如 C/C、COBOL 和Eiffel 等编程语言的插件已经可用,或预计会推出。
Eclipse 框架还可用来作为与软件开发无关的其他应用程序类型的基础,比如内容管理系统。
基于 Eclipse 的应用程序的突出例子是 IBM 的 WebSphere StudioWorkbench,它构成了 IBM Java 开发工具系列的基础。
例如,WebSphere StudioApplication Developer 添加了对
JSP、servlet、EJB、XML、Web 服务和数据库访问的支持。
Eclipse 最初由 OTI 和 IBM 两家公司的 IDE 产品开发组创建,起始于 1999年 4 月。
IBM 提供了最初的 Eclipse 代码基础,包括 Platform、JDT 和 PDE。
目前由 IBM 牵头,围绕着 Eclipse 项目已经发展成为了一个庞大的 Eclipse 联盟,有 150 多家软件公司参与到 Eclipse 项目中,其中包括 Borland、RationalSoftware、Red Hat 及 Sybase 等。
Eclipse 是一个开发
源码项目,它其实是 Visual Age for Java 的替代品,其界面跟先前的 Visual Age for Java 差不多,但由于其开放
源码,任何人都可以免费得到,并可以在此基础上开发各自的插件,因此越来越受人们关注。
近期还有包括 Oracle 在内的许多大公司也纷纷加入了该项目,并宣称 Eclipse 将来能成为可进行任何语言开发的 IDE 集大成者, 使用者只需下载各种语言的插件即可。
三 概要设计3.1 游戏功能 坦克大战游戏,顾名思义就是玩家操作一辆自己的坦克和敌方坦克对战,游戏的主要功能有: 7. 能够四处移动 8. 能够发射子弹打击敌人 9. 敌人能够移动 10. 能够模拟爆炸 11. 能够产生障碍 12. 能够增长生命3.2 游戏规则 游戏中坦克能向八个方向移动,和友方坦克碰到后不能穿越。
坦克能向八个方向发射子弹,子弹击中坦克产生爆炸,玩家坦克还能发射同时向八个方向发射的集束炸弹,集束炸弹有数量限制,每次生命有 3 颗。
地图上有障碍物,坦克和子弹都不能穿越障碍物。
玩家坦克有生命数,还有生命值,被敌人子弹击中后生命值减少,生命值为 0 后坦克爆炸,生命数减少 1,开始新坦克的操作。
地图上有随机出现的加生命值的血块,吃后恢复生命值满,游戏的目的是操作自己的坦克消灭所有敌人坦克,消灭完所有敌人坦克后游戏结束。
3.3 游戏界面和操作方式 游戏界面: 图 3.1 游戏界面 操作方式:游戏开始后玩家用键盘操作,方向键上下左右控制坦克的方向,M 键控制子弹发射,N 键控制集束子弹发射。
3.4 本程序需解决的有关技术问题 1. 游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。
一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、键盘事件都会以极高的频率在后台等待响应,若有丝毫的差别都将很容易导致程序在运行不久后可能出现严重错误,甚至死循环。
因此,其逻辑设计应当相当严谨,需将所有可能发生的事件及意外情况考虑在设计中。
2. 游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,有关贴图,在 MIDP2.0 中提供了用于增强游戏功能的 game 包,使得解决静态或动态、画面背景、屏幕刷新的双缓冲等都有较好的解决方案。
3. 己方坦克的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定其一定的智能性;同时,出现在屏幕上的敌方可能会有较多的数量,这需要为每个敌方开辟一个线程以便能让其独立运行。
Java 的多线程能力为实现这样的游戏提供了可能。
敌人坦克的运行算法也需要进行适当的设置,以免游戏过于简单,单调。
4. 对于双方坦克发出的子弹的控制也需要对其跟踪控制,子弹也需要处在独立的线程中。
敌方子弹仅需要扫描用户坦克,而用户坦克需要在每一步扫描所有的敌方坦克。
这需要对所有的对象有较好的控制。
另外,子弹在运行过程中也需要实时扫描是否碰撞到了相关障碍物或屏幕边界。
如此过多的线程同时在本来效率就不高的 KVM 虚拟机上运行,也许会导致程序的缓慢。
5. 双方的坦克在前进时也需要考虑到是否碰撞到相关物体或对方坦克,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。
每一次刷新页面、每前进一步都需要将所有的周围环境都进行扫描。
6. 游戏的地图不可能通过绘图来解决。
否则,不仅难于控制和处理过多的元素,也会因过多的大型图片而不能限制程序的大小,失去手机上程序的原则和Java 的优势。
同时,地图关卡不宜保存在手机有限的内存中,而最好采取外部文件的读入读出方法。
7. Java 是基于虚拟机的半解释型编译系统,其执行效率较 C等完全编译后的程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。
除开发过程中对结构上的控制、变量的使用、算法的优化等优化外,还可以使用混淆器Obfuscator进行程序打包后的优化。
四 系统详细设计4.1 游戏窗口 游戏窗口是一个游戏的重要部分,游戏窗口的简洁美观能给玩家带来良好的第一印象,从而让玩家对游戏产生兴趣到最后喜欢上游戏,下面两个小节总结了用代码生成游戏窗口的方法以及要注意的事项。
4.1.1 生成游戏窗口 产生一个游戏的窗口。
产生一个窗口有两种方法:1继承 Frame.2直接 new 一个 Frame. 我采用继承的方法来产生游戏窗口,因为继承的方式比较灵活可以定义自己的成员变量。
并且尽量保持 problems view 没有警告import java.awt.Framepublic class TankClient extends Frame private static final long serialVersionUID 1L public static void mainString args TankClient tc new TankClient tc.launchFrame public void launchFrame this.setLocation100100 this.setSize80.
上一篇:
重庆市高校第一届数据库应用程序设计大赛策划书
下一篇:
网络能耗监测系统管理端的研究与实现