Java版坦克大战的分析与实现计算机毕业设计论文.doc

上传人:小小飞 文档编号:3902527 上传时间:2019-10-10 格式:DOC 页数:41 大小:1.18MB
返回 下载 相关 举报
Java版坦克大战的分析与实现计算机毕业设计论文.doc_第1页
第1页 / 共41页
Java版坦克大战的分析与实现计算机毕业设计论文.doc_第2页
第2页 / 共41页
Java版坦克大战的分析与实现计算机毕业设计论文.doc_第3页
第3页 / 共41页
Java版坦克大战的分析与实现计算机毕业设计论文.doc_第4页
第4页 / 共41页
Java版坦克大战的分析与实现计算机毕业设计论文.doc_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《Java版坦克大战的分析与实现计算机毕业设计论文.doc》由会员分享,可在线阅读,更多相关《Java版坦克大战的分析与实现计算机毕业设计论文.doc(41页珍藏版)》请在三一文库上搜索。

1、找毕业设计、项目源码、编程视频,就上码农网manong365 Java版坦克大战的分析与实现摘 要J2SE (Java 2 Standard Edition)就是Java2的标准版,主要用于桌面应用软件的编程,是伴随着计算机技术的飞速发展而诞生的一项新的开发技术。随着个人电脑的日益普及、Java功能在个人电脑上的实现,Java应用程序产生的单机增值服务逐渐体现出其影响力,对丰富人们的生活内容、愉悦身心、开发智力等起着不可忽视的作用。该论文通过总结和分析JAVA游戏的开发流程和代码框架的设计,开发了一款基于J2SE架构的游戏坦克大战。本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念

2、和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克绘制在地图的上层。本设计主要实现的功能是让坦克能向八个方向移动,并且打出炮弹,子弹击中敌人坦克,子弹和敌人坦克同时消失,产生爆炸,CPU坦克能智能的移动并且打出炮弹。Java良好的跨平台特性在软件的开发中显示出了巨大的威力,“一次编写,随处运行”,java系统可以运行在不同的操作系统和硬件上。随着linux的持续增长以及MacOSX完全

3、支持java技术,跨平台的特性变得越来越有分量。 由于免费、跨平台、java语言本身技术先进,在高校中,java已经成为许多学科研究、课程和计算的首选语言,用java做上机作业,一般都是鼓励的。据我所知,北大、清华许多院系的研究生入学考试都可以用java语言答题。实际上,用java来完成这些工作,大多数情况下要比用C或其他语言简洁得多,你可以把注意力集中在算法等核心部分,从而获得更高分数。关键词:面向对象 坦克大战 游戏 J2SEAnalysis and implementation of online survey systemAbstractThe 21st was one take th

4、e network as the information age, the computer technology, the networking already seeped to the government, the school, in Enterprises and institutions routine work. Along with societys development, many professions need to have the massive information to understand that the specific users needs, th

5、e tradition makes the law is the organization massive manpower and resources to the user sending out survey form, then carries on to the collection information counts and obtains the wish result. But this tradition makes the law to waste in a big way, the efficiency is low, the cycle is long. In ord

6、er to change this phenomenon, also has such present situation regarding the school, along with university populations increase, teacher and schoolmate communicates mutually is very difficult, thus I have designed one about the teaching management on-line questionnaire survey system, hoped that can g

7、ive everybody to bring conveniently.This online investigation system uses the modulation object-oriented design concept, uses Java and the Jsp technology. Uses the J2EE programming thought specifically, with frames and so on Hibernate had the following function: Started to investigate, the filling i

8、n investigation, examination investigation filling to progress, functions and so on conclusion investigation, verification investigation, examination investigation, raised the teaching efficiency greatly. Through the database may the permanent preserved investigation result, provide the reference fo

9、r the later investigation.Through this kind of investigation system, it the time limit, may not adopt the anonymous way to accept the investigation, the student can reflect the real idea and the opinion. May target-oriented make suitable coming out to the questionnaire content, summarizes question w

10、hich the student easy to meet. Using computers operational capability, may carry on the massive data analysis for us, and can prompt reflect the student the question provides to teacher and the teaching department, the teaching department in view of students request, but further improves the teachin

11、g way, improved the quality of teaching and the teaching efficiency greatly. Simultaneously causes the paperless work to leave us remotely not.Key words: Questionnaire survey system,Data processing,Hibernate,Oracle,Java前 言自上世纪九十年代初以来,随着全球范围内先进电子元器件技术的不断发展和软件产业的崛起,电子计算机技术得到了飞速发展,人类迎来了“信息爆炸”的时代。计算机技术人

12、类的生产、生活方式和思维方式产生了巨大变化。然而游戏本身就是一种娱乐方式。自有人类文明的时候,就有了游戏,可以说游戏就是人们生活娱乐的一部分。如果要从精品云集的FC游戏中找一款经典之作,坦克大战绝对是FC上所有经典中的经典,当年NAMCO的Battle City在国内又称坦克大战,以其极为出色的游戏性令全球众多玩家为之疯狂。该游戏是一款以红白机为平台操作射击游戏,1名玩家可控制自己的坦克进行移动和射击,歼灭对方为胜利目标。每个关卡的地形不同,玩家可利用各种地形对敌人进行打击,并会得到补给。其操作简单且娱乐性强,是一款男女老少皆宜的游戏。游戏附带地图编辑器,玩家可自行编辑地图进行游戏。游戏中的众

13、多经典关卡至今还让许多玩家记忆犹新,在80年代时曾经在无数家庭中带来了无尽的欢乐。JAVA语言是当今最为流行的程序设计语言之一,作为非常优秀和极为健壮的编程语言,它同时有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用JAVA语言,不仅可以开发出功能强大的大型应用程序,而且JAVA语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,JAVA的出现使得所开发的应用程序“一次编写,处处可用”的实现成为了可能。游戏的耐玩性而在坦克大战里增加更多的内容加大其可玩性,比如:装备,对战方式,任务合作模式等等。可以想像,如果坦克大战还是人机对战的模式

14、,并且协作性不提高的化,玩家对该游戏的选择性将大大降低,最终成为历史。本课题就是想对该游戏进行分析研究,借助于它的游戏规则,用JAVA语言模拟开发一个类似的,功能相对简单的小游戏。第1章 绪论1.1选题的目的和意义游戏本身就是一种娱乐方式。自有人类文明的时候,就有了游戏,可以说游戏就是人们生活娱乐的一部分。在今天,借助于数字、电子、网络、创意、编剧、美工、音乐等等“先进”的道具,游戏对于人们现实生活的虚拟达到了一个全新的境界,并且则在这新的境界上还原了游戏的本源-人与人的互动。游戏满足了现代社会必须的沟通需求,无疑它应该是适合所有人的。1.2 国内外研究现状国内游戏市场,已经坐拥了1000万用

15、户且仍不断增长的游戏玩家市场,百余款游戏也着实热闹,但也体现出国内玩家的相对固定和游戏种类的相对单一,虽说运营商的推广手法也各具特点,可本质上的大同小异使得竞争空前惨烈,而由此诱发的种种问题更是招致了社会与媒体的不满,阻碍了游戏产业的发展。网络游戏市场的重新定位是最迫切需要解决的问题。大型游戏机除了在大众休闲娱乐方面,还在军事、国防、医疗等方面有良好的发展前景。广州大型游戏机所采用的尖端计算机图形图像技术、多样化的软件程序设计、成熟的机械和电子技术,被充分运用在军事、国防及医疗等方面。例如,在军事模拟对抗演习中,大型游戏机既可以模拟作战现场的地形、军力部署、天气等情况,还可以进行多兵种战术技能

16、对抗训练;在国防训练方面,大型游戏机可以模拟坦克操纵、导弹发射、飞机驾驶、舰艇巡航等多种训练任务;在医疗培训方面,大型游戏机拥有的全息三维立体投影技术,可以逼真地展示人体的各部分构造和器官,以上这些方面的应用,都显示出大型游戏机在降低行业技能培训成本的优势。1.3本系统的现实意义 坦克大战(Battle City)是1985年日本南梦宫Namco游戏公司在任天堂FC(FamilyComputer)平台上,推出的一款多方位平面射击游戏。游戏以坦克战斗及保卫基地为主题。大部分80后的青年人曾经都玩过这款FC平台上的经典游戏,FC平台上的坦克大战只能两个人协同作战。本系统运用Java这个跨平台的编程

17、语言,在PC上重新实现这一款经典游戏,探究曾经这一款经典游戏的大概设计与实现,并且加入坦克八个方向的行走,以及对战模式,使游戏的更丰富。1.4开发技术概述 Java、C#语言、C/C+主流编程语言比较,简单地说,它们不是同一种语言,语法有差别,编程时具体用到的类库或者函数库也不一样。虽然它们不是同一种语言,不过它们却也有所联系。广泛地说,C可以看作其他三种语言的源语言,因为其他三种语言几乎都是从C而来的,无论从数据类型还是控制句看,其他三种语言都有从C得来的迹象。其中C则一般看作是对C语言的扩展。因为C语言没有面向对象的语法结构,而当时业界又迫切需要面向对象的编程特性,所以贝尔实验室的开发者就

18、为C添加了面向对象的结构。现在C已经不只是C的扩展了,它已经完全可以被看作一种新的编程语言。虽然C的特性以及库函数仍然被C支持,不过C拥有自己的独立的类库体系,功能相当强大。Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,J

19、ava更具备了显著优势和广阔前景。虽然它的底层(运行时库)是用C语言开发的,可是并不依赖于C。因为Java的运行是在运行时库的支持下进行的,所以运行效率比起可以更接近底层的CC来说效率会有所影响,不过Java的类库采用很好的设计理念设计,非常好用,也非常实用,已经成为业界的一种标准开发语言。它的跨平台的特性尤其让很多开发者欢迎,你只需要开发一次就能在所有安装了Java运行时库的系统上运行。Java发展了十几年了,可以应用领域非常之广泛,Web开发有JSP,J2EE,桌面领域现在有JavaFX。C是微软开发的一种编程语言,语法类似Java,几乎就是从Java的翻版。运行原理和Java也类似,也是

20、通过运行时库的支持运行。不过支持的平台还很有限。JAVA几乎被所有平台支持,而C目前只被Windows和Linux支持,Windows下的支持当然是由微软自己开发的,而Linux下的支持则有MONO支持。实际上,MONO也是把C应用转化为JAVA应用而已,所以本质上,C仍然只是被微软自己的操作系统支持。应用平台受到限制,是它最大的缺点。CC的优点在于与底层比较接近,可以控制的粒度更加精细,是开发系统级应用的最佳选择。关于缺点,我想正是源于其优点,因为它们能控制的编程元素粒度精细,所以编程比较困难,烦琐,容易出错。Java和C都比较高级,可以看作高级语言的高级语言,优点是开发容易,但运行效率不如

21、更为底层的CC。具体选择使用的时候,可以根据实际的项目需要选择。运行效率要求高的,底层控制要求高的用CC,否则可以选择Java或C;跨平台的要求高的可以用Java。关于跨平台,CC也是很好的语言,因为所有平台都支持,不同的是,不同平台支持的实现不同,类库不同,要编写跨平台的程序,需要选择跨平台的类库,如标准类库,如果标准类库的支持不够也只需要附加编写一个跨平台的支持类库。 第2章 开发工具及系统架构简介2.1编程语言简介Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE,

22、 JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。Java平台由Java虚拟机(Java Virtual Machine)和Java 应用编程接口(Application Programming Interface、简称API)构成。Java 应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。在硬件或操作系统平台上安装一个Ja

23、va平台之后,Java应用程序就可运行。现在Java平台已经嵌入了几乎所有的操作系统。这样Java程序可以只编译一次,就可以在各种系统中运行。Java应用编程接口已经从1.1x版发展到1.2版。目前常用的Java平台基于Java1.6,最近版本为Java1.7。 2.2 J2EE平台简介JAVA依照应用领域的不同,共分为三大版本,分别是J2EE、标准版本J2SE(Java 2Platform, Standard Edition)、微型版本J2ME(Java 2 Platform, Micro Edition)。J2EE核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通

24、的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。 在J2EE架构下,开发人员可依循规范基础,进而开发企业级应用;而不同J2EE供货商,同会支持不同J2EE版本内所拟定的标准,以确保不同J2EE平台与产品之间的兼容性。换言之,植基J2EE架构的应用系统,基本上可部署在不同的应用服务器之上,无需或者只须要进行少量的代码修改,即能大幅提高应用系统的可移植性(Portability)。 J2EE主由SUN与IBM等厂商协同业界共同拟定而成的技术规范,以企业与企业之间的运算为导向的JAVA开发环境。J

25、2EE架构定义各类不同组件,如Web Component、EJB Component等,而各类组件可以再用(reuse),让已开发完成的组件,或者是经由市面采购而得的组件,均能进一步组装成不同的系统。 J2EE组成了一个完整企业级应用的不同部分纳入不同的容器(Container),每个容器中都包含若干组件(这些组件是需要部署在相应容器中的),同时各种组件都能使用各种J2EE Service/API。2.3 MyEclipse软件简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只 是一个框架和一组服务,用于通过插件构建开发环境。Eclipse 最初由OT

26、I 和IBM两家公司的IDE 产品开发组创建,起始于1999 年4 月。第3章 软件需求分析3.1 可行性分析1).游戏程序是一项精度要求很高的程序系统,因为其代码利用率很高。一个实时运行的最终作品,每秒都会运行成千上万行程序,绘图事件、健盘事件都会以极高的频率在后台等待循环。因此,其逻辑设计应当相当严谨,需将所有可能发生的事件各意外情考虑在设计中。2).游戏中为了美观,适用性强,可能需要采用外部文件引入的图片贴图,屏幕刷新的双缓冲等都有较好的解决方案。3).我方的坦克的运行可以通过键盘响应事件控制,但敌方则因为是自动运行,就需要有一定的智能性;同时,出现在屏幕上的敌方可能性会有较多的数量,这

27、需要为每个敌方开辟一个线程以便能让其独立运行。Java的多线程能力为实现这样的游戏提供了可能。4).对于双方坦克发出的子弹的控制也需要对其跟踪控制,子弹也需要处在独立的线程中。敌方子弹仅需要扫描用户坦克,而用户坦克需要在每一步扫描所有的敌方坦克。这需要对所有的对象有较好的控制。另外,子弹在运行过程中也需要实时扫描是否碰撞到了相关障碍物或屏幕边界。如此过多的线程同时在本来效率就不高的机器上运行,也许会导致程序的缓慢。5).双方坦克在前进时也考虑到是否碰撞到相关物体或对方坦克,以免重叠运行,造成许多物理上不可能的情况,缺乏真实感。6).是基于虚拟机的半解释型编译系统,其执行效率较C+等完全编译后的

28、程序会低很多,程序如果不进行精简和优化,将可能导致运行的不流畅。开发过程中要对结构的控制、注意变量的使用。3.2 游戏规则和系统功能介绍游戏中坦克能向四个方向移动,和其他坦克碰到后不能穿越。坦克能向八个方向发射子弹,子弹击中坦克产生爆炸,玩家坦克还能发射四个方向发射集束炸弹。地图上有障碍物,坦克和子弹都不能穿越障碍物。玩家坦克有生命数,还有生命值,被敌人子弹击中后生命值减少,生命值为后坦克爆炸,开始新坦克的操作按2。地图上有随机出现的加生命值的血块,吃恢复生命值满,游戏的目的是操作自己的坦克消灭敌人坦克,消灭所有敌人坦克后游戏结束。基于Java语言的各种特性,本软件使用Java语言进行开发,并

29、最终完成当初的设计要求,所有的程序以及程序功能如表3-1所示表3-1程序功能表程序名程序功能TankClient.java游戏的主窗口Tank.java坦克的数据和方法Missile.java炮弹的数据和方法Explore.java爆炸的数据和方法Wall.java墙的数据和方法Blood.java血块的数据和方法3.3 程序运行流程3.3.1 程序中炮弹的运行和流程炮弹继承了Missile,运行在独立的线程中,它拥有一个很重要的变量,good。它标识了子弹是属于玩家的还是敌人的,这样可以控制子弹再脱离坦克后的运行状态中的行为,其中主要功能流程图见图3-1流程图当击中了需要做出反应的物体时,就

30、分别采取措施:击中墙时,子弹生命就结束,不再继续画.如果没有击中物体,就继续检测是否击中了坦克,这根据子弹的来源分为两种情况.当来自玩家时,检测是否与敌人碰撞,发生碰撞时,将敌人从List中移走,并置为空,产生爆炸效果,敌人数量减少一位,敌人屏幕上数量减少一位。如果是来自敌人的子弹,将同样检测与玩家坦克的碰撞,如有碰撞,玩家生命就减少,当生命值为0时,就死亡了。下图为炮弹运行的主要流程:开始是否出界击中墙,不再画子弹击中物体玩家子弹击中敌人敌人子弹击中玩家开始YYNNNNNN消除敌人消除玩家YYYY图3-1炮弹运行流程图3.3.2 描述敌方坦克运行流程是否碰墙开始可否前进前进是否开炮是否已死换

31、向开炮结束NNYYNNY图2-2敌方tank运行流程图第4章 系统总体设计4.1 主体模块该模块由TankClient.java文件实现,负责调用各个类。创建游戏窗口。该类中的变量如表4-1所示。表4-1 Tankclient类中成员变量表成员变量描述变量类型名称整个游戏的宽度intFRAM_WIDTH整个游戏的高度int FRAM_LENGTH该类中包括lauchFrame( ),paint( ),update( )三个方法,其功能表如表3-2表4-2 Tankclient类中方法表方法功能备注lauchFrame()显示坦克主窗口无备注paint(Graphics g)重画时调用无备注up

32、date(Graphics g)使用双缓冲消除闪烁现象无备注4.2 子弹模块该模块由Missile.java文件实现,实现子弹的各个功能,实现打坦克,实现子弹是否活着的功能。该类中的变量如表4-3所示。表4-3 Missile类中成员变量表成员变量描述变量类型名称子弹在X方向上的速度intXSPEED子弹在Y方向上的速度intYSPEED子弹的高度intHEIGHT该类中包括hitTank( ),Islive( )二个方法,其功能表如表4-4表4-4 Missile类中方法表方法名功能备注hitTank(Tank t)实现子弹撞坦克的功能无备注Islive()实现判断子弹是否活着的功能无备注4

33、.3 坦克模块该模块由Tank.java文件实现,创建坦克,打子弹,打多发子弹。处理坦克和墙相撞的问题。坦克不能相互穿越。加入主战坦克的生命值。击毙敌人坦克。让坦克更加智能。该类中的变量如表4-5所示表4-5 Tank类中成员变量表成员变量描述变量类型名称坦克在X方向上的速度intXSPEED坦克在Y方向上的速度intYSPEED坦克的高度intHEIGHT该类中包括collidesWithWall( ),Eat( )二个方法,其功能表如表4-6表4-6 Tank类中方法表方法名功能备注collidesWithWall(Wall w)处理坦克和墙相撞的问题无备注Eat(Blood b)坦克吃血

34、,增长生命无备注4.4 墙模块该模块由Wall.java文件实现,添加两堵墙,处理坦克和墙相撞的问题。该类中的变量如表4-7所示。表4-7 Wall类中成员变量表成员变量描述变量类型名称坦克在X方向上的速度intXSPEED坦克在Y方向上的速度intYSPEED坦克的高度intHEIGHT该类中包括collidesWithWall( )一个方法,其功能表如表4-8表4-8 Wall Tank类中方法表方法名功能备注collidesWithWall(Wall w)处理坦克和墙相撞的问题无备注4.5 血液模块该模块由Blood.java文件实现,添加必要的方法,让血块按照一定轨迹运动,并在一定时间

35、消失。该类中的变量如表4-9所示。表3-9 Blood类中成员变量表成员变量描述变量类型名称血块在X轴的坐标IntX血块在X轴的坐标IntY血块的宽度IntW血块的高度IntH该类中包括Move(),islive()二个方法,其功能表如表4-10所示。表4-10 Blood Tank类中方法表方法名功能备注Move()处理血块移动的问题无备注islive()判断血块是否活着无备注4.6 爆炸模块该模块由Explode.java文件实现,击毙一辆坦克后产生爆炸。该类中的变量如表4-11所示。表4-11 Explode类中成员变量表成员变量描述变量类型名称坦克生死的描述booleanLive主类的

36、变量TankClientTc该类中包括GetDefaultToolkit(),Draw(Graphics)二个方法,其功能表如表4-12表4-12 Explode类中方法表方法名功能备注GetDefaultToolkit()拿到的工具包无备注Draw(Graphics)画爆炸现象无备注第5章 系统的具体实现5.1 以下的论述均根据上面需求分析的顺序来安排:1. 图形用户界面图形用户界面要用到Java课程里的第六章的知识,需要用到抽象窗口工具集即AWT和Swing来设计实现,由于游戏需要有功能按键来控制游戏的重新开始,退出,暂停,帮助等,所以在实现过程中,设计菜单项。 坦克,河流,树,家,墙等都

37、是调用各自类里面的draw函数来画出来,最后new一个图形面板出来,把所有的元素都add进面板就可以了。界面的构造在程序中由TankClient类的构造方法来完成,即没构造一个用户类都会产生这样一个包含各种游戏元素在内的界面。由于画面是静止的,而我们游戏的画面要求是动态的,游戏中的坦克和子弹都是在不断的动,可穿透的普通墙体也在“动”,所以对于画面,必须要不断的更新,重画才能产生动态的效果。在程序中,此部分功能也是由TankClient类里的update函数和framPaint函数共同实现,将“动”的元素进行重画,而不动的元素如菜单项就不用重画,所以这也是为什么把菜单项设计进TankClient

38、类的构造方法中。当然,图形用户界面中也包括对各种界面元素的大小,位置和颜色等设计,细节问题这里就不赘述。2. 界面中的元素界面中的元素都是在构造界面的时候用界面实例对象的add方法加入进去的,且“动”的元素要不断更新重画。3. 坦克坦克主要由Tank类来实现。坦克的属性:速度(有X轴和Y轴速度之分),坦克大小,坦克所在新的位置(X坐标和Y坐标),坦克是否还活着,行动方向等。所有的这些属性都有一个初始化值,从而在游戏一开始就可以运行。在设计过程中,坦克出现的位置由坐标而定。用户方之后的位置由键盘监听方向,按指定方向以恒定的速度前进此速度为全局静态变量,当没有接受到键盘的控制时,则保持静止。敌方的

39、坦克则是根据随机数来控制随机的方向和路径的,当敌方坦克撞到阻碍物时,会转回到前一步的位置,从而解决了坦克撞到阻碍物不回头的问题,这个功能由Tank类里的changToOldDir()方法实现。坦克的方向和子弹发射以及游戏的重新开始都是由键盘来控制的,所以在Tank类里面必须要实现这些功能。Tank类的keyPressed()方法用于接受键盘的按键监听,接收到相应的键盘信息后,如接收到F,则表示发射子弹,所以此时要调用Tank类里的fire()方法,fire()方法不带传递参数,因为子弹的方向总是从属于坦克的方向和位置。 由于坦克在碰到墙,界面边界和“家”等阻碍物时要改变方向,所以在Tank里面

40、必须对于每一种阻碍物要设计一个方法来作为应对策略,当然解决方法是把下一步的位置调整到上一步的位置。用户方Tank还可以吃红心来增加自己的生命值,得到一个红心,增加100生命值。所以在程序中坦克必须要有一个方法来判断当坦克接触到红心时,生命值增加的方法。程序中用eat()方法来实现“吃”红心并且增加生命值,当然,这其中要使得坦克的生命值不会超过自己生命的极限值200,所以判断的时候,当生命小于等于100时,直接加100生命值,但是当生命值大于100时,就只能使生命值加满到极限值200.当然,说到生命值,一定要在图形用户界面中显示出来,所以在Tank类里面一定要设计一个方法,来画出生命的增减过程,

41、在Tank类里面是用DrawBloodbBar()来刻画。4. 树林树林主要是用来做修饰物体的,具有不透明性。由一个Tree类来描述,Tree有两个属性,位置和长宽。树的类里有一个自己的构造方法,当然还有一个必不可少的draw()方法。5. 河流河流的作用与树林类似,这里不再赘述。6. 墙体墙体分为普通墙和铁墙。普通墙可以被子弹损坏,而铁墙则不会。 普通墙普通墙有以下几个属性:墙的固定长度和宽度,墙的位置坐标,墙体是由图片加入到图形用户界面来表示的。程序中用CommonWall类来描述普通墙,此类里有一个构造方法,用于传递参数,还有一个draw()方法,来画指定位置的墙,另外还有个getRec

42、t()方法来构造长方形实例。 金属墙金属墙的参数和普通墙完全类似,只不过金属墙不能被子弹穿破,但这个属性在接下来讨论的子弹的属性里面,由于上面已经给出里普通墙的属性,所以这里将不再赘述金属墙的属性了。7. 家:家是由Home类来抽象的,具体的属性有:家的大小,家的位置,家的存活状态,与树林和河流一样,家还有draw()和自己的构造方法,作用也和前面的一样,但是家还有一些新的方法,因为可以在游戏中重新开始游戏,所以要有设置方法让家重新“活”起来,当然,有时候要判断家现在的存活状态,所以就必须要isLive()和setLive()两个方法了。除此之外,还要有一个游戏结束界面的清理工作和提示工作,g

43、ameover()方法就是解决这个问题的。8. 子弹:子弹的属性:子弹前进的X轴和Y轴的速度初始速度都为10,子弹的长度和宽度初始的长宽都为10,子弹的位置,子弹的方向,子弹是否live等。由于不同方向的子弹其实是图片,所以这里要考虑不同图片的选择用对应的方向来指定,所以要建立Map键值对,用String属性的方向来指定不同的图片。如:imgs.put(L, bulletImages0);类里面惯例有个构造方法,用来默认传递位置和方向,当然这里用到了同构,另外一个构造函数来取得子弹的状态和界面。darw()方法和move()方法来控制画子弹和移动子弹接下来就是要考虑到子弹打到个=各元素上的反应

44、,敌方的子弹打到敌方时,不会杀死自己人,所以这里只要直接return true就可以了,不用移除子弹碰到的坦克,更不用调用爆炸来显示爆炸效果。具体代码:public boolean hitTanks(List tanks) /当子弹打到坦克时for (int i = 0; i tanks.size(); i+) if (hitTank(tanks.get(i) /对每一个坦克,调用hitTankreturn true;return false;子弹打到其他坦克上时用hitTank(Tank t) 方法,子弹打到墙上时用hitWall(CommonWall w)方法,打到金属墙上hitWall(

45、MetalWall w),打到家hitHome(),当然在这些方法里,都要作相应的操作来表示接受到子弹的后果,普通墙要移除对应的位置,所以在方法里面又要调用remove()方法来移除,如打到家上,就要吧home的生命设置为false,从而结束游戏。实现如下:public boolean hitHome() /当子弹打到家时if (this.live & this.getRect().intersects(tc.home.getRect() this.live = false;this.tc.home.setLive(false); /当家接受一枪时就死亡return true;return f

46、alse;还有,当子弹射击到对方(用户方对敌方)时,当敌方射击到用户方,用户方要减少生命值,没接受一枪,就执行t.setLife(t.getLife() - 50); / 受一粒子弹寿命减少50,接受4枪就死,总生命值200,当然方法里面还要做其他很多的判断,如生命值是否小于0,如果是的话就执行t.setLive(false);从而结束游戏。9. 爆炸:坦克的爆炸效果独立出来用一个类来描述,爆炸的属性:位置和存活状态,另外,画爆炸效果的时候要取得用户界面控制,所以要定义private static Toolkit tk = Toolkit.getDefaultToolkit();其他的方法只能的大同小异。10. 菜单功能菜单功能包括游戏的重新开始,暂停,退出等。这些功能的用户界面放

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1