收藏 分享(赏)

坦克大战毕业论文 正式版.doc

上传人:精品资料 文档编号:10817968 上传时间:2020-01-11 格式:DOC 页数:45 大小:1.30MB
下载 相关 举报
坦克大战毕业论文  正式版.doc_第1页
第1页 / 共45页
坦克大战毕业论文  正式版.doc_第2页
第2页 / 共45页
坦克大战毕业论文  正式版.doc_第3页
第3页 / 共45页
坦克大战毕业论文  正式版.doc_第4页
第4页 / 共45页
坦克大战毕业论文  正式版.doc_第5页
第5页 / 共45页
点击查看更多>>
资源描述

1、 IJava 版坦克大战摘要Java 是近几十年来随着各种技术的发展,尤其是编程语言飞速发展而诞生的一项新的开发语言。随着信息技术的飞速发展,计算机的使用也日渐普及,各种各样游戏也纷纷出现在我们的视野中。本论文从实际应用出发,向大家介绍坦克大战游戏的设计与实现。该版本的坦克大战是基于 Java 语言设计开发的,本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。在开始游戏后,启动客户端,在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克

2、绘制在地图的上层。本设计主要实现的功能是让坦克能向八个方向移动,并且打出炮弹,子弹击中敌人坦克,子弹和敌人坦克同时消失,产生爆炸,敌方坦克能智能的移动并且打出炮弹。能够支持单人对战和两人对战两种模式。 完成这个项目的主要目的是让自己尽可能全面的掌握 Java 的基础知识。在整个坦克大战的开发过程中将涉及到 Java 基本知识的大部分内容,这个自己本身对 Java 知识的巩固有很好的作用。关键词: Java;坦克;游戏;智能IIJava version of the Battle CityAbstractJava is a new development language in recent d

3、ecades with the development of various technologies, especially the rapid development of the programming language and birth. With the rapid development of information technology, the use of computers has become more popular, a variety of games have also appeared in our field of vision. From the prac

4、tical application of this paper, we introduce the design and implementation of Battle City game.This version of the Battle City is designed and developed based on the Java language , the design of object-oriented design patterns, for all objects in the game to give the concept of objects and attribu

5、tes . After the beginning of the game , start the client, in the main threads running , the screen will refresh certain frequency using double buffering technology to redraw the screen in real time to reflect the state of the entire game . User-controlled tanks run in the main thread , with the scre

6、en refresh frequency and movement. Tanks will be initialized when the game starts , and then draw in the upper tank of the map. The main function is designed so that the tank can be moved to eight directions , and shot shells, bullets hit the enemy tanks, bullets and enemy tanks simultaneously disap

7、pear , resulting in an explosion , enemy tanks can move and play smart bombs . Able to support both single- player game and battle modes.The main objective of this project is to complete as much as possible make their comprehensive grasp of the basics of java . Battle City during the entire developm

8、ent process in most of the content related to the basics of java , java to consolidating the knowledge itself has a very good role.Keywords: Java;tanks ;games;smart目录摘要 IAbstract.II1 前言 .11.1 游戏设计的需求分析 .11.1.1 国内外电子网络游戏的现状 11.1.2 本系统设计的目的和意义 21.1.3 本系统和其他开发游戏区别 21.2 开发技术概述 21.2.1 Java、C 语言、C+三种主流编程技

9、术比较 .21.3 本章小结 32 相关技术理论 .42.1 系统运行环境 .42.1.1 系统运行的软件环境 42.2 相关理论 .42.2.1 关于 Eclipse 的介绍 42.2.2 J2SE 框架 .42.2.3 Java 图形用户界面编程 .52.3 本章小结 .53 系统设计 .63.1 系统可行性分析 .63.1.1 技术可行性 63.1.2 经济可行性 63.1.3 操作可行性 63.2 系统需求分析 .73.2.1 在单人模式下实现的功能 73.2.2 在两人模式下实现的功能 73.3 系统功能设计 .73.3.1 坦克大战总体功能设计 73.3.2 StartFrame

10、类基本功能分析 .83.3.3 TankClient 类和 TankClient2 类基本功能分析 .93.3.4 Tank 类基本功能分析 123.3.5 Missile 类基本功能分析 .173.3.6 Explode 类基本功能分析 .183.3.7 Blood 类基本功能分析 .193.4 本章小结 194 系统实现 204.1 游戏主窗体实现 204.2 单人游戏的实现 204.3 两人游戏功能的实现 234.4 本章小结 245 总结与展望 255.1 总结 .255.2 设计中的不足之处 .255.3 展望 .25参考文献 .26致 谢 27附 录 28外文原文 .30中文翻译

11、.3711 前言自二十一世纪以来,信息技术发生了翻天覆地的变化,似乎到处都有炫彩缤纷的游戏画面,市面上出现了各种各样的游戏,有网页游戏、网络游戏、单机游戏无形中产生了各种各样的网络游戏公司,不仅如此,它还促使大量的大型公司开始向游戏这方面发展。可想而知,游戏已经成为我们生活的一大部分。坦克大战是我们童年经常玩的游戏,也是最经典的一款小霸王单机游戏之一。起初,坦克大战(Battle City)是 1985 年日本南梦宫 Namco 游戏公司在任天堂 FC 平台上,推出的一款多方位平面射击游戏。游戏以坦克战斗及保卫基地为主题,属于策略型联机类。同时也是 FC平台上少有的内建关卡编辑器的几个游戏之一

12、,玩家可自己创建独特的关卡,并通过获取一些道具使坦克和基地得到强化。随着信息技术的快速发展,各种版本的坦克大战相继出现。该版本的坦克大战是基于 Java 语言设计开发的,具有比较好的经典游戏画面和人工智能,和传统的小霸王单机坦克大战有些异曲同工的效果,但是支持无限复活,可以让自己可好的体会游戏的乐趣。完成这个项目的主要目的是让自己尽可能全面的掌握 Java 的基础知识。在整个坦克大战的开发过程中将涉及到 Java 基本知识的大部分内容,这个自己本身对 Java 知识的巩固有很好的作用。1.1 游戏设计的需求分析1.1.1 国内外电子网络游戏的现状游戏本身就是一种受大众欢迎的娱乐方式。自有人类文

13、明的时候,就有了游戏,可以说游戏就是人们生活娱乐的一部分。如今,借助于数字、电子、网络、创意、编剧、美工、音乐等等“先进”的道具,网络游戏对于人们现实生活的虚拟达到了一个全新的境界,并且则在这新的境界上还原了游戏的本源-人与人的互动。网络游戏满足了现代社会必须的沟通需求,无疑它应该是适合所有人的。目前国内的游戏公司已经达到 200 多家,市场上的运营的游戏更是数不胜数,但是国内的游戏与,美国、日本、韩国等相比还有一些差距。不过相对而言,我国有更广阔的游戏市场和宽阔的游戏发展空间,同时在这几年我国的游戏产业也有了一个跨越式的发展,我国的游戏也逐步的走向了国际的舞台。如我国的网路游戏逐渐由代理转向

14、了出口。相比与网络游戏,我国的单机游戏的发展却是不尽人意。根据中国出版工作者协会游戏工作委员会的数据,2012 年中国游戏市场实际销售收入为 602.8 亿元,而中国单机游戏市场实际销售收入 0.75 亿元,占游戏市场总收入的 0.12%。而国产单机游戏的发行款数,已经从 2005 年的 71 款下降到 2012 年的 5 款。国产单一游戏款数大幅度减少的背后,则是题材日渐单一化。目前国产单机游戏的题材大多集中于武侠、三国等,游戏种类也较为单一。 与国产单机游戏的题材和玩法单一相对应的是,受到国内玩家热捧的进口单机游戏,涵盖了动作射击类、模拟经营类、即时战略类等诸多种类,题材从模拟真实世界的生

15、活,到深入奇幻世界进行探险不一而足。与此同时,盗版、价位过高以及网游冲击市场,使得国产单机游戏的复兴之路并不平坦。但我坚信随着我国游戏产业逐渐的国际化,单机游戏这一模块也会得到极大的改善和跳跃式的发展的。21.1.2 本系统设计的目的和意义坦克大战是一款非常经典的单机游戏,因为它比较简单有趣,无论老少都比较适合。坦克大战的设计对每一个 Java 语言设计者进行语言提高和进阶都是一个很好的锻炼机会。坦克大战游戏的设计比较复杂,它涉及面广、牵涉方面多,如果不好好考虑和设计,将难以成功开发出这个游戏。在这个游戏的设计中,牵涉到图形界面的显示与更新、数据的收集与更新,并且在这个游戏的开发中,还要应用类

16、的继承机制以及一些设计模式。因此,如何设计和开发好这个坦克大战游戏,对于提高 Java 开发水平和系统的设计能力有极大的帮助。在设计开发过程中,需要处理好各个类之间的方法的调用关系,还要处理各个类相应的封装,并且还要协调好各个模块之间的逻辑依赖关系。正是因为如此,本次毕业设计的目的在于学习 Java 程序设计基本技术,学习用Eclipse 开发 Java 程序的相关技术,熟悉游戏“坦克大战”的需求,熟悉项目开发的完整过程。学会怎样进行一个项目的需求分析、概要设计、详细设计等软件开发过程,熟练地掌握 Java 程序设计的基本技术和方法,熟练地掌握 Eclipse 环境的使用方法,培养起初步的项目

17、分析能力和程序设计能力。 1.1.3 本系统和其他开发游戏区别本系统的坦克大战是基于 Java 语言设计开发的,具有高超的人工智能,精美的图形处理,支持单机单人和两人对战的坦克射击游戏。比之前网络上实现的游戏更加方便,快捷,智能。游戏基本玩法较简单,游戏可一人电脑作战,每次电脑方有坦克车辆数,会随着关卡的递增而增加,游戏以消灭全部敌方坦克过关为目的。在这过程中,坦克有机会得到血块来补充生命值,从而使自己的生存力变的更加的持久,也能利用各种有利地形来阻击敌人。游戏设置了障碍物(墙,水,草) ,坦克不能穿越墙射击坦克,炮弹可以穿过水。还有给玩家坦克设置超级炮弹,当电脑方坦克数量过多时,玩家坦克可以

18、发射超级炮弹打击敌方,最主要的是可以无限制的复活,可以让玩家尽情的享受游戏的乐趣。主要新增的功能简单罗列如下:1、屏幕左上方显示游戏状态,当关卡数到了第五关时则游戏结束;2、电脑坦克只可在空地中或草丛中行走,不可通过墙等障碍物;3、游戏中当玩家坦克的血量剩余 40 后,会在随机位置随机出现血块,坦克经过该位置可获得相应生命补充,得到补充后,血块消失;4、玩家坦克拥有可以穿墙和发射超级炮弹的特权;5、炮弹击中坦克时的爆炸效果的显示;6、背景音乐的播放。7、无限制的复活。1.2 开发技术概述1.2.1 Java、C 语言、C+三种主流编程技术比较Java 编程语言的风格十分接近 C 语言、C+语言

19、。Java 是一个纯粹的面向对象的程序设计语言,它继承了 C+语言面向对象技术的核心。Java 舍弃了 C 语言中容易引起错误的指针(以引用取代) 、运算符重载(operator overloading) 、多重继承(以接口3取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming) 、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecod

20、e) ,然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。Java 现在主要用在 WEB 开发,手机游戏及一些平台游戏的开发,因为它具有很好的跨平台性,在手机等各种电子产品上应用非常广泛。C 语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔实验室的 Dennis M. Ritchie 于 1972 年推出,1978 年后,C 语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,

21、不仅仅是在软件开发上,而且各类科研都需要用到C 语言。C 语言是一种面向过程编程,这就使得 Java 具有重用的特性,在开发速度上比C 语言更快,但是在运行速度上却是 C 更快,因为 C 属于底层语言,它比 Java 更加亲近机器,所以在许多系统开发上一般是用 C 语言,比如我们常用的 XP 系统、LINUX 系统,都是 C 语言开发的。跨平台的服务器端的嵌入式脚本语言。C+是在 C 语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言 。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。它支持过程化程序设计,数据抽象,面向对象设计,制作图标等多种程

22、序设计风格。C+语言的主要特点表现在两个方面,一是尽量兼容 C,二是支持面向对象的方法。它操持了 C 的简洁、高效的接近汇编语言等特点,对 C 的类型系统进行了改革的扩充,因此 C+比 C 更安全,C+的编译系统能检查出更多的类型错误。另外,由于 C 语言的广泛使用,因而极大的促进了 C+的普及和推广。然而 C+由于语言本身过度复杂,甚至使人们难于理解其语义。C+的编译系统受到 C+的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。 由于本身的复杂性,复杂的 C+程序的正确性相当难于保证。C+多用于游戏引擎、反病毒、硬件驱动以及一些对运行效率要求比较

23、高的应用程序,比如数据库管理系统。 C+语言在提供强大的功能的同时也提高了程序含 BUG 的可能性。 C+为了照顾大量的 C 语言使用者,而兼容了 C,使得自身仅仅成为了带类的 C 语言,多多少少影响了其面向对象的彻底性。相比较三种语言,Java 更适用于游戏的开发,它的易编写和跨平台的特性决定了它在游戏软件开发中的主导地位。1.3 本章小结本章主要介绍了网络游戏在国内外发展的现状,现如今,游戏市场的重新定位是最迫切需要解决的问题;对设计本系统的目的和意义进行了一个详细的介绍;与其他游戏的相比较,简要描述相对与同种类型游戏,该版本游戏的不同之处。对 Java 语言、C语言、C+三种主流编程技术

24、进行简述,然后相比较,阐述了使用 Java 语言编程本版本游戏的原因。42 相关技术理论2.1 系统运行环境2.1.1 系统运行的软件环境(1)操作系统:Windows 7 旗舰版;(2)开发工具:Eclipse Juno Service Release 1;(3)运行环境:J2SDK 1.7;(4)编程语言:Java 语言;2.2 相关理论2.2.1 关于 Eclipse 的介绍Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(

25、Java Development Kit,JDK) 。虽然大多数用户很乐于将 Eclipse 当作 Java 集成开发环境(IDE)来使用,但 Eclipse 的目标却不仅限于此。Eclipse 还包括插件开发环境(Plug-in Development Environment,PDE) ,这个组件主要针对希望扩展 Eclipse 的软件开发人员,因为它允许他们构建与 Eclipse 环境无缝集成的工具。由于 Eclipse 中的每样东西都是插件,对于给 Eclipse 提供插件,以及给用户提供一致和统一的集成开发环境而言,所有工具开发人员都具有同等的发挥场所。Eclipse 的这种平等和一致

26、性并不仅限于 Java 开发工具。尽管 Eclipse 是使用Java 语言开发的,但它的用途并不限于 Java 语言;例如,支持诸如C/C+、COBOL、PHP 等编程语言的插件。Eclipse 最早是由 Object Technologics International 这家公司开发,该公司于1996 年被 IBM 并购后,将 Eclipse 改为 Open Source software。它最大的特点是:采用了插件的结构,通过下载安装不同的插件,就可以实现不同类型的程序开发。利用eclipse 开发项目,是可以提高项目的开发效率,因为它不但可以像传统的一些编辑器一样编写代码,而且还有自动

27、找错/纠错功能、Debug 调试和代码自动生成等一些重要的功能,这使项目开发的效率得到了提升。Eclipse 可以作为其他开发工具的平台。工作区被存储在磁盘上,并且对其他人是可见的。Eclipse3.2 的大多数新特性都是Eclipse 用户需求的直接结果。2.2.2 J2SE 框架Java2 平台包括:标准版(J2SE) 、企业版(J2EE)和微缩版(J2ME)三个版本。J2SE 是基于 Java 跨平台技术和强有力的安全模块而开发的,其最新的特征和功能极大地提高了 Java 语言的伸缩性、灵活性、适用性,以及可靠性。J2SE 特点:良好的计算性能和缩放能力。J2SE 提升了 Java 计算

28、的性能与缩放能力,代表了 Java 技术的大跨步进展。通过 J2SE 框架更简易的步骤、花费更少的时间,采用 Java 技术开发与配置5要求更高的应用了。J2SE 在 Java 客户机应用方面得到了重大性能提升。基于 Swing 的Java 小程序和应用程序在图形用户界面(GUI)的响应速度上也大有提高。跨平台:J2SE 是一个具有综合性能的平台,能使一个完整的、可缩放的高性能应用配置在任何种类的平台上。支持 Web 服务: J2SE 对 SSL、LDAP 等业界标准技术也给予支持,因此保证了在不同平台、系统和环境间的互操作能力。J2SE 支持 XML 技术和一整套安全服务,因此为基于各类标准

29、的可互操作应用与服务的创建奠定了重要基础。有了 J2SE与 Java Web Services Developer Pack 的结合,开发商就能创建、测试和配置 Web 服务了。完整性:J2SE 还是一个完整的开发环境。开发商可基于这一环境创建功能丰富的交互式应用。这些应用可以配置在任何平台上。J2SE 具有新的 GUI 控制功能、快速的 Java 2DT 图形功能、支持国际化与本地化扩展和新的配置选项,并对 Windows XP提供扩展支持。总之,J2SE 是多种不同风格软件的开发基础,包括客户端 Java 小程序和应用程序,以及独立的服务器应用程序等。J2SE 版还是 J2ME 的基础,是

30、 J2EE 执行程序的推动力。Java 之所以能够发展得很快,是因为互联网的发展非常快。从计算的结构来看,Java 主要分三大类:第一是服务器端,这里就有了 J2EE 企业版;第二是桌面 PC,这一类用的是 J2SE 标准版;第三就是掌上电脑、移动设备,用的都是 J2ME。但是,大部分非企业级软件还是在 J2SE 上开发的比较多。首先,这是因为很多的应用软件都是在J2SE 上开发的;其次,J2SE 是和 J2EE 兼容的,企业版是在标准版上的扩充,在 J2SE的版本上开发的软件,拿到企业的平台上是一样可以运行的;再次,一般开发还是在J2SE 的环境上,只是说 J2ME 提供微型版的一个环境。在

31、 J2SE 上虚拟出一个环境,开发出来的应用软件是可以拿到微型版上运行的。2.2.3 Java 图形用户界面编程GUI 是 Graphical User Interface 的简称,即图形用户界面,通常人机交互图形化用户界面设计经常读做“goo-ee”准确来说 GUI 就是屏幕产品的视觉体验和互动操作部分。GUI 是一种结合计算机科学、美学、 心理学、行为学,及各商业领域需求分析的人机系统工程,强调人 机 环境三者作为一个系统进行总体设计。GUI 的广泛应用是当今计算机发展的重大成就之一,它极大地方便了非专业用户的使用。人们从此不再需要死记硬背大量的命令,取而代之的是可以通过窗口、菜单、按键等

32、方式来方便地进行操作。这种面向客户的系统工程设计其目的是优化产品的性能,使操作更人性化,减轻使用者的认知负担,使其更适合用户的操作需求,直接提升产品的市场竞争力。Java 中的 Graphics 类是用于绘图和显示格式化文本的工具类。在 Java 程序中绘图必须在一个窗口(容器)中进行,绘图窗体经常被设计为一个组件容器。一般首先在一个面板中进行绘制,然后再将这个面板添加到显示窗口中去。Graphics 类是在 Java.awt 包中申明,显示格式化文本和绘图时通过调用 Graphics类的 draw()方法实现的,例如 drawString(String),drawLine()等。绘图采用的坐

33、标系是原点在左上角,纵轴向下以像素为单位的坐标系。在后面的开发过程中由于为了增加项目的客观性,将绘图改为了图片的加载 drawImage() 。2.3 本章小结在本章节中首先介绍了该系统的运行环境,值的注意的是软件环境的配置,因为整个系统都是在虚拟环境下运行的,所以虚拟环境对于整个设计的调试和运行至关重要;6其次对开发工具 Eclipse 的简单介绍,利用 Eclipse 开发项目,是可以提高项目的开发效率。还有是对一些技术理论,J2SE 框架,Java 语言,系统运行所支持的操作系统,Java 图形编程等理论做了简单的介绍,为本系统后期实现图形化界面做了理论和技术支持。3 系统设计3.1 系

34、统可行性分析3.1.1 技术可行性Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE, JavaME, JavaSE)的总称。Java 自面世后就非常流行,发展迅速,对 C+语言形成了有力冲击。Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode) ,然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。Java 技术由于具有卓越的通用性、高效性、平

35、台移植性和安全性,广泛应用于个人 PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java 更具备了显著优势和广阔前景。Java语言经历了出生、成长、成熟壮大的几个阶段,逐渐发展成为IT领域里的主流计算模式,使用Java开发工具方便,容易实现。Java对开发跨平台性质的产品有它自己独特的优势,游戏也是其开发产物之一。本系统开发过程是利用Java编程语言和Eclipse集成开发环境配合使用来实现的。在本毕业设计中主要引用的类包有 AWT , IO ,Swing ,Util,Applet 等等。3.1.2 经济可

36、行性本设计的开发是基于JDK7.0和Eclipse Juno Service Release 1的,因为它们都是免费而且开源的软件,所以实现本设计的成本就有所降低。随着计算机、网络通讯和信息技术的迅猛发展以及人类精神生活品质的提高,国际、国内的各种各样的大型综合游戏网站如雨后春笋般的发展起来。一款好的游戏带来的经济效益可以说是不可估量的,比如现在网上最流行的魔兽世界、英雄联盟,坦克世界等大型网络版游戏。所以对于游戏的编写来说,更多的人倾向于采用Java语言来实现,因为Java具有卓越的通用性、高效性、平台移植性和安全性。更重要的是Java的跨平台性,决定了游戏开发者只需要少量的时间就可以开发出

37、一款可以在不同平台上运行的游戏。而不是象其它编程语言一样如果想让游戏在不同的系统中运行,开发者必须在不同的系统上进行编码和开发,这样会使的开发时间和开发该游戏所需要的资金的消耗量更多了。因此Java对于游戏开发者来说,它的可操作性和性价比更高。3.1.3 操作可行性本Java版坦克大战是一个单机版的游戏程序,只是模拟了实现了现在网络上的一些网页单机坦克大战游戏的基础功能,如坦克的移动,坦克的射击,坦克的复活,以及每个关卡地图的设计。本版本的坦克大战和传统的坦克大战的操作相类似,所以对于玩家来说它的操作简易,更容易让玩家上手。玩家不需要了解内部流程,只是和一7般其它的单机游戏一样的操作即可开始游

38、戏。相对于开发者而言,数据的存放采用的集合的技术所以本毕业设计无需数据库的连接。整个系统形成主要由JDK7.0虚拟环境和Eclipse共同完成无需更多复杂的工具和服务器支持。3.2 系统需求分析3.2.1 在单人模式下实现的功能1) 能够发射子弹打击敌人2) 敌人能够移动并且可以随机发射子弹3) 能够模拟爆炸4) 能够产生障碍墙5) 能够产生血块6) 我方坦克可以复活7) 有超级炮弹功能8) 地图的绘制9) 有背景音乐的播放功能10) 结束界面的绘制11) 信息的统计3.2.2 在两人模式下实现的功能1)添加两辆我方坦克,这样可以两人进行游戏;2)由于外界原因,将我方的另一辆坦克设置为智能坦克

39、,并且同一方坦克不能应相互射击而掉血或死亡。3)能够发射子弹打击敌人4)敌人能够移动并且可以随机发射子弹5)能够模拟爆炸6)能够产生障碍墙7)能够产生血块8)我方坦克可以无限制复活9)有超级炮弹功能10)地图的绘制11)有背景音乐的播放功能12)结束界面的绘制13)信息的统3.3 系统功能设计3.3.1 坦克大战总体功能设计坦克大战游戏主要实现玩家参加游戏的整个流程,用户进入游戏开始界面客户端选择游戏模式,可分为单人模式和两人模式,选择模式可以直接进入游戏状态。进入游戏运行界面,程序会初始化坦克,炮弹,障碍物。玩家可以通过控制键盘来控制自8己的坦克进行移动、射击、复活等主要操作。当玩家歼灭本关

40、卡所有的坦克后,游戏运行界面会自动进入下一个关卡,本程序一共有五个关卡,每个关卡中的坦克数量是按照程序中所设计的数量叠加方法来对本关卡的坦克数量进行设置。当玩家在第五关卡击毁所有坦克以后,程序会判定玩家通关胜利,运行界面出现通关胜利的画面。Java版坦克大战游戏流程图如图3.1所示:击毁敌方坦克 击毁敌方坦克图 3.1 坦克大战游戏流程3.3.2 StartFrame 类基本功能分析StartFrame 类是主类,通过事件的监听调用 TankClient 类和 TankClient2 类来进入游戏,是游戏的主界面。StartFrame 类的作用是,对游戏主界面的美化,对游戏相关信息的描述,让玩

41、家更快,更直接的了解游戏,了解游戏的玩法。通过 paintComponent(Graphics g)添加两人游戏游戏模式单人游戏通关胜利添加敌方坦克 添加敌方坦克添加我方坦克 添加我方坦克一号二号结束游戏开始9开始界面的背景,调用 ReadFile(String file)读取文档信息,以及通过对菜单选项的点击或者快捷键的触发来引起事件的响应从而进入相对应的游戏模式和对应的游戏相关信息。1)游戏主界面的背景画面设置的主要代码如下:JPanel bgPanel = new JPanel() protected void paintComponent(Graphics g)tryImagebg=I

42、mageIO.read(newFile(“src/images/BackImage/tankb21.gif“);g.drawImage(bg , 0 , 0 , getWidth() , getHeight() , null);catch (IOException ex)ex.printStackTrace();2)游戏的相关文档是通过对相对应的游戏文档的读取来显示出来的。下面是读取文档的实现代码:private void ReadFile(String file)try BufferedReader br = new BufferedReader(new InputStreamReader(

43、new FileInputStream(new File(file), “GBK“);String message = “;String str;while(str = br.readLine() != null) message += str + “n“; JOptionPane.showMessageDialog(this,message);catch (FileNotFoundException e1)System.out.println(“文件未找到“);e1.printStackTrace();catch (IOException e1)System.out.println(“文件读

44、取异常“);e1.printStackTrace();3.3.3 TankClient 类和 TankClient2 类基本功能分析TankClient 类和 TankClient2 类是整个系统的核心部分,它承担整个系统的所有可实现功能类中方法和内部类的调度工作,通过调用这些方法来实现整个坦克大战中坦克的加载,坦克的移动,坦克的射击以及对障碍物(水、墙、草)的绘制,炮弹的绘制,信息的显示,结束界面的绘制等等。它创建的游戏窗口,是整个游戏运行的场10所。在整个游戏中它起着确定性的作用。在程序中我通过 public static final 来设定窗体的最终高度和宽度。该类中的具体变量如下表所示

45、:表 3.1 TankClient 和 TankClient2 中的成员变量表成员变量描述 变量类型 名称整个游戏窗口的宽度 int Game_Width整个游戏窗口的高度 int Game_Height它负责坦克信息的统计,关卡的重新绘制以及界面的刷新,背景音乐的播放以及各种方法的调用。TankClient 类和 TankClient2 类设计流程图如图 3.2 所示:开始初始化坦克和墙发射炮弹同一阵营不处理碰撞检测(坦克和子弹,坦克和墙,子弹和墙)产生爆炸(不同阵营)判断是否死亡我方坦克由键盘控制,敌方智能操作11没有死亡死亡图 3.2 TankClient 类设计流程TankClient

46、 类的作用其实最重要,它在本毕业设计中起着一个管家的作用,它通过调用其他类中封装的方法来使整个系统运行起来,使各个功能对应的实现。下面是显示 TankClient 类与各个类之间的关系如图 3.3 所示:攻击 击中我方血量低于 40图 3.3 游戏系统类关系图TankClient 类和 TankClient2 类通过,调用 paint(Graphics g)方法来对敌方坦克、子弹、墙、血块进行添加,调用 wallmap(Graphics g)来实现地图的设计,采用update(Graphics g)解决屏幕闪烁问题。调用内部类 AudioPlayer 来进行背景音乐的播放。背景音乐内部类的设计

47、代码的实现如下:public class AudioPlayer AudioClip clip = null;public AudioPlayer() try setAudioClip(Applet.newAudioClip(newjava.io.File(“src/music/tankwar4.wav“).toURL();结束TankClient 类调用 Missile 类Tank 类(产生不同阵营的坦克) Wall类调用 Explode 类(产生爆炸)调用 Blooded 类12catch (Exception e) e.printStackTrace();loop();stop();pu

48、blic AudioClip getAudioClip() return this.clip;public void setAudioClip(AudioClip clip) this.clip = clip;void loop() if (getAudioClip() != null) getAudioClip().loop(); void stop() if (getAudioClip() != null) getAudioClip().stop();3.3.4 Tank 类基本功能分析Tank(坦克)类中,封装了一些与坦克相关的变量属性,包括坦克自己的大小、坦克的位置、运动速度(在 x

49、轴方向的速度;在 Y 轴方向的速度)、生命值控制(life) 、坦克方向控制、炮筒方向、生死控制、好坏控制(good)的变量等。如下表所示:表 3.2 Tank 类的成员变量成员变量描述 变量类型 名称坦克的宽度 int width坦克的高度 int height坦克的位置 x 坐标 int x13坦克的位置 y 坐标 int y坦克上一步的 x 坐标 int oldx坦克上一步的 y 坐标 int oldy续表 3.2 Tank 类的成员变量坦克生命值 int life坦克在 x 坐标的移动速度 int xspeed坦克在 y 坐标的移动速度 int yspeed坦克的好坏 boolean good坦克是否存活 boolean liveTank 类中没有 main 函数,不是主类,但是在本毕业设计中却起着很大的作用,它当中只封装一些变量属性和方法,被 TankClient 类和 TankClient2 类调用来实现坦克的移动、射击、补血等一系列的功能。Tank 类中的主要方法罗列如下:(1)getRect()方法,具体代码如下:pu

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报