1、伊犁师范学院本科生毕业论文(设计)论文题目基于JAVA的网络版坦克大战游戏设计学生姓名系专业计算机科学与技术学号06080605032指导教师基于JAVA的网络版坦克大战游戏设计(伊犁师范学院计算机科学系062班,新疆伊宁市835000)摘要本设计采用面向对象的设计模式,对游戏中的所有物体赋予对象的概念和属性。运行程序后允许用户选择执行选项菜单。在开始游戏后,启动服务器和客户端,对背景的所有物体进行绘图。在主程序运行的线程中,画面刷新将以一定的频率采用双缓冲技术对屏幕重绘,实时反映整个游戏的进行状态。用户控制的坦克运行在主线程中,随屏幕刷新的频率而移动。坦克将在游戏开始时进行初始化,然后将坦克
2、绘制在地图的上层。本设计主要实现的功能是让坦克移动并能够智能的打出炮弹,躲避子弹,炸毁对方坦克。能够支持网络对战和单机对战两种模式。关键词面向对象;坦克大战;网络游戏;JAVA;SOCKET类中图分类号TP3111I目录摘要第1章前言111游戏设计的需求分析1111国内外电子网络游戏的现状1112本系统的现实意义1113本系统和其他开发游戏区别212开发技术概述2121JAVA、C语言、C三种主流编程技术比较213本章小结2第2章相关技术理论321系统运行环境3211系统运行的软件环境3212系统运行的硬件环境322相关理论3221关于ECLIPSE的介绍3222J2SE框架3223联机通信机
3、制4224JAVA图形编程523本章小结5第3章系统设计631系统可行性分析6311技术可行性6312经济可行性6313操作可行性632系统需求分析6321在人机对战模式下实现的功能6322在网络对战模式下实现的功能633系统功能设计7331坦克大战总体功能设计7II332TANKCLIENT类基本功能分析7333TANK类基本功能分析8334MISSILE类基本功能分析9335EXPLODE类基本功能分析9336服务器类基本功能分析10337信息传送类基本功能分析1034本章小结10第4章系统实现1141游戏主窗体实现1142单机游戏的实现1243联机功能实现1444本章小结17第5章总结与
4、展望1851总结1852设计中的不足之处1853展望18致谢19参考文献201第1章前言人类进入21世纪,全球一体化,互联网就起到重要的作用,而且随着互联网的不断发展,信息技术逐渐发展壮大,将成为网络经济的核心。其中计算机、网络通信的发展最为迅速。在现今电子信息高速发展的时代,网络游戏已经深入到人们的日常生活中,成为老少皆宜的娱乐方式。11游戏设计的需求分析111国内外电子网络游戏的现状游戏本身就是一种娱乐方式。自有人类文明的时候,就有了游戏,可以说游戏就是人们生活娱乐的一部分。在今天,借助于数字、电子、网络、创意、编剧、美工、音乐等等“先进”的道具,网络游戏对于人们现实生活的虚拟达到了一个全
5、新的境界,并且则在这新的境界上还原了游戏的本源人与人的互动。网络游戏满足了现代社会必须的沟通需求,无疑它应该是适合所有人的。国内网络游戏市场,已经坐拥了1000万用户且仍不断增长的游戏玩家市场,百余款游戏也着实热闹,但也体现出国内玩家的相对固定和游戏种类的相对单一,虽说运营商的推广手法也各具特点,可本质上的大同小异使得竞争空前惨烈,而由此诱发的种种问题更是招致了社会与媒体的不满,阻碍了游戏产业的发展。网络游戏市场的重新定位是最迫切需要解决的问题。大型游戏机除了在大众休闲娱乐方面,还在军事、国防、医疗等方面有良好的发展前景。广州大型游戏机所采用的尖端计算机图形图像技术、多样化的软件程序设计、成熟
6、的机械和电子技术,被充分运用在军事、国防及医疗等方面。例如,在军事模拟对抗演习中,大型游戏机既可以模拟作战现场的地形、军力部署、天气等情况,还可以进行多兵种战术技能对抗训练;在国防训练方面,大型游戏机可以模拟坦克操纵、导弹发射、飞机驾驶、舰艇巡航等多种训练任务;在医疗培训方面,大型游戏机拥有的全息三维立体投影技术,可以逼真地展示人体的各部分构造和器官,以上这些方面的应用,都显示出大型游戏机在降低行业技能培训成本的优势。112本系统的现实意义游戏本身是一种娱乐方式,能带给人们无尽的乐趣,而且游戏行业的发展还将会带动众多周边产业,如五金、塑料、机械、电子、显像管,高端机型甚至使用了40英寸以上的大
7、屏幕背投、液晶显示器等,这些显像设备不但要依赖国内众多显像管生产企业提供支持,更要针对游戏的内容进行深入开发和优化,以适应游戏内容的飞速发展和变化,大大突破了传统家电类显像设备的限制,对国内显像管制造企业的发展、创新具有极大的推动作用,大型游戏机的外部框体制造涉及工业设计、模具加工、五金加工、塑料成形、特殊印刷等工艺流程,由此带动了一大批相关的零部件生产制造企业,而这些企业均为生产密集型企业,大幅2度增加了劳动就业的需求。113本系统和其他开发游戏区别本系统的坦克大战是基于JAVA语言设计开发的,具有高超的人工智能,精美的图形处理,支持单机运行和网络对战的坦克射击游戏。比之前网络上实现的游戏更
8、加方便,快捷,智能。游戏基本玩法较简单,游戏可一人电脑作战,每次电脑方有坦克10辆,游戏以消灭全部敌方坦克过关为目的。在这过程中,坦克有机会得到血块来添加生命值,从而变得更加强大,也能利用各种有利地形来阻击敌人。游戏设置了墙面,电脑方坦克不能穿越墙面射击玩家坦克,而玩家坦克可随意穿越墙面打击电脑方坦克,这一游戏特权。还有给玩家坦克设置超级炮弹,当电脑方坦克数量过多时,玩家坦克可以发射超级炮弹打击敌方。主要新增的功能简单罗列如下1、屏幕左上方显示游戏状态,当玩家方坦克数全为零时则游戏结束;2、一般坦克只可在空地中或草丛中行走,不可通过墙面等障碍物;3、游戏中打坏敌方坦克后,可能会在随机位置随机出
9、现血块奖励,坦克经过该位置可获得相应加生命值奖励;4、玩家坦克的游戏资格和电脑坦克不同。12开发技术概述121JAVA、C语言、C三种主流编程技术比较JAVA语言是一种跨平台,适合于分布式计算环境的面向对象编程语言。JAVA现在主要用在WEB开发,手机游戏及一些平台游戏的开发,因为它具有很好的跨平台性,在手机等各种电子产品上应用非常广泛。C语言是一种面向过程编程,这就使得JAVA具有重用的特性,在开发速度上比C语言更快,但是在运行速度上却是C更快,因为C属于底层语言,它比JAVA更加亲近机器,所以在许多系统开发上一般是用C语言,比如我们常用的XP系统、LINUX系统,都是C语言开发的。跨平台的
10、服务器端的嵌入式脚本语言。C多用于游戏引擎、反病毒、硬件驱动以及一些对运行效率要求比较高的应用程序,比如数据库管理系统。C语言在提供强大的功能的同时也提高了程序含BUG的可能性。C为了照顾大量的C语言使用者,而兼容了C,使得自身仅仅成为了带类的C语言,多多少少影响了其面向对象的彻底性。13本章小结本章主要介绍了网络游戏在国内外发展的现状,现如今,网络游戏市场的重新定位是最迫切需要解决的问题。本系统主要的现实意义,与其他游戏的区别和完善的一些功能。本文用JAVA语言、C语言、C三种主流编程技术比较,阐述了使用JAVA语言编程的原因。3第2章相关技术理论21系统运行环境211系统运行的软件环境(1
11、)网络服务器操作系统WINDOWSXP;(2)开发工具ECLIPSE32;(3)运行环境J2SDK15;(4)编程语言JAVA语言;212系统运行的硬件环境(1)CPUINTEL或者兼容微处理器,奔腾166MHZ及其以上;(2)内存最低32MB,可以运行图形界面的JAVAAPPLICATION;最低48MB,可以运行JAVAAPPLET;内存不足,将会导致系统尤其是服务器的性能大幅下降;(3)硬盘242MB到80GB及其以上;(4)图形显示卡无要求;(5)网卡普通网卡,3COMOFFICECONNECT10/100兆位网卡;22相关理论221关于ECLIPSE的介绍ECLIPSE是一个主要针对
12、JAVA项目开发所设计的【综合性集成开发环境INTEGRATEDDEVELOPMENTEMIRONMENT,IDE】,最早是由OBJECTTECHNOLOGICSINTERNATIONAL这家公司开发,该公司于1996年被IBM并购后,将ECLIPSE改为OPENSOURCESOFTWARE。它最大的特点是采用了插件的结构,通过下载安装不同的插件,就可以实现不同类型的程序开发。利用ECLIPSE开发项目,是可以提高项目的开发效率,因为它不但可以像传统的一些编辑器一样编写代码,而且还有自动找错/纠错功能、DEBUG调试和代码自动生成等一些重要的功能,这使项目开发的效率得到了提升。ECLIPSE可
13、以作为其他开发工具的平台。工作区被存储在磁盘上,并且对其他人是可见的。ECLIPSE32的大多数新特性都是ECLIPSE用户需求的直接结果。222J2SE框架J2SE软件是快速开发、部署关键任务和企业应用程序的首选解决方案。J2SE是基于JAVA跨平台技术和强有力的安全模块而开发的,其最新的特征和功能极大地提高了JAVA语言的伸缩性、灵活性、适用性,以及可靠性。J2SE特点良好的计算性能和缩放能力。J2SE提升了JAVA计算的性能与缩放能力,代表了JAVA技术的大跨步进展。通过J2SE框架更简易的步骤、花费更少的时间,采用JAVA技术开发与配置要求更高的应用了。J2SE在JAVA客户机应用方面
14、得到了重大性能提升。基于SWING的JAVA小程序和应用程序在图形用户界面GUI的响应速度上也大有提高。跨平台J2SE是一个具有综合性能的平台,能使一个完整的、可4缩放的高性能应用配置在任何种类的平台上。支持WEB服务J2SE对SSL、LDAP等业界标准技术也给予支持,因此保证了在不同平台、系统和环境间的互操作能力。J2SE支持XML技术和一整套安全服务,因此为基于各类标准的可互操作应用与服务的创建奠定了重要基础。有了J2SE与JAVAWEBSERVICESDEVELOPERPACK的结合,开发商就能创建、测试和配置WEB服务了。完整性J2SE还是一个完整的开发环境。开发商可基于这一环境创建功
15、能丰富的交互式应用。这些应用可以配置在任何平台上。J2SE具有新的GUI控制功能、快速的JAVA2DT图形功能、支持国际化与本地化扩展和新的配置选项,并对WINDOWSXP提供扩展支持。总之,J2SE是多种不同风格软件的开发基础,包括客户端JAVA小程序和应用程序,以及独立的服务器应用程序等。J2SE版还是J2ME的基础,是J2EE执行程序的推动力。JAVA之所以能够发展得很快,是因为互联网的发展非常快。从计算的结构来看,JAVA主要分三大类第一是服务器端,这里就有了J2EE企业版;第二是桌面PC,这一类用的是J2SE标准版第三就是掌上电脑、移动设备,用的都是J2ME。但是,大部分非企业级软件
16、还是在J2SE上开发的比较多。首先,这是因为很多的应用软件都是在J2SE上开发的;其次,J2SE是和J2EE兼容的,企业版是在标准版上的扩充,在J2SE的版本上开发的软件,拿到企业的平台上是一样可以运行的;再次,一般开发还是在J2SE的环境上,只是说J2ME提供微型版的一个环境。在J2SE上虚拟出一个环境,开发出来的应用软件是可以拿到微型版上运行的。223联机通信机制网络编程,简单地理解就是两台计算机相互通信。其基本模型就是客户机/服务器模型,也就是通信双方中的一方必须提供一个固定的位置,而另一方只需要知道这个固定的位置,并且建立两者之间的联系,然后完成数据交换。这里提供固定位置的一方通常称为
17、服务器,而建立联系的一方称为客户端。SOCKET(中文意思为插座),基于客户机/服务器的SOCTET通信模式如图21所示图21基于客户机/服务器的SOCTET通信模式图创建SOCKET类的对象指定服务器端公认的SOCKET地址和端口在SOCKET上监听客户端的链接请求接收客户端的请求信息解释并处理请求信息向服务器发出请求向服务器端发送链接请求创建SOCKET类对象客户端将处理结果返回给客户端接收服务结果服务请求服务响应服务器端5当客户程序需要与服务器程序通讯的时候,客户程序在客户机创建一个SOCKET对象,SOCKET类有几个构造函数。两个常用的构造函数是SOCKETINETADDRESSAD
18、DR,INTPORT和SOCKETSTRINGHOST,INTPORT,两个构造函数都创建了一个基于SOCKET的连接服务器端流套接字的流套接字。两个函数都通过参数PORT获得服务器的端口号。假设已经建立连接了,网络API将在客户端基于SOCKET的流套接字中捆绑客户程序的IP地址和任意一个端口号,否则两个函数都会抛出一个IOEXCEPTION对象。如果创建了一个SOCKET对象,那么它可能通过调用SOCKET的GETINPUTSTREAM方法从服务程序获得输入流读传送来的信息,也可能通过调用SOCKET的GETOUTPUTSTREAM方法获得输出流来发送消息。在读写活动完成之后,客户程序调用
19、CLOSE方法关闭流和流套接字。224JAVA图形编程JAVA中的GRAPHICS类是用于绘图和显示格式化文本的工具类。在JAVA程序中绘图必须在一个窗口(容器)中进行,绘图窗体经常被设计为一个组件容器。一般首先在一个面板中进行绘制,然后再将这个面板添加到显示窗口中去。GRAPHICS类是在JAVAAWT包中申明,显示格式化文本和绘图时通过调用GRAPHICS类的DRAW()方法实现的,例如DRAWSTRINGSTRING,DRAWLINE等。绘图采用的坐标系是原点在左上角,纵轴向下以像素为单位的坐标系。23本章小结在本章节中首先介绍了该系统的运行环境,值的注意的是软件环境的配置,因为整个系统
20、都是在虚拟环境下运行的,所以虚拟环境对于整个设计的调试和运行至关重要;其次对开发工具ECLIPSE32的简单介绍,利用ECLIPSE开发项目,是可以提高项目的开发效率。还有是对一些技术理论,J2SE框架,JAVA语言,系统运行所支持的操作系统,联机通信机制及JAVA图形编程等理论做了简单的介绍,为本系统后期实现图形化界面和网络通信做了理论支持。6第3章系统设计31系统可行性分析311技术可行性JAVA语言自SUN公司于1995年5月正式发布以来,经历了出生、成长、成熟壮大的几个阶段,逐渐发展成为IT领域里的主流计算模式,使用JAVA开发工具方便,容易实现。JAVA对开发网络产品有它自己独特的优
21、势,网络游戏也是其开发产物之一。本系统开发过程是利用JAVA编程语言和ECLIPSE集成开发环境配合使用来实现的,它是基于TCP/UDP协议和SOCKET编程技术,建立以C/S为结构模式的娱乐性游戏平台。312经济可行性本设计的开发是基于JDK50和ECLIPSE32的,因为它们都是免费而且开源的软件,所以实现本设计的成本就有所降低。随着计算机、网络通讯和信息技术的迅猛发展以及人类精神生活品质的提高,国际、国内的各种各样的大型综合游戏网站如雨后春笋般的发展起来。一款好的游戏带来的经济效益可以说是不可估量的,比如现在网上最流行的魔兽世界、征途等大型网络版游戏。本游戏既可单机运行,也可以是联机版多
22、人同时在线对战。313操作可行性本设计是一个网络版的游戏平台,只是模拟了现在社会上的一些网络游戏的部分功能,所以操作简易,玩家不需要了解内部流程,只是和一般其他的网络游戏一样的操作即可开始游戏。相对于开发者而言,整个系统形成主要由JDK50虚拟环境和ECLIPSE32共同完成,无需更多复杂的工具和服务器支持。32系统需求分析321在人机对战模式下实现的功能1能够发射子弹打击敌人2敌人能够移动3能够模拟爆炸4能够产生障碍5能够增长生命322在网络对战模式下实现的功能在人机对战模式中实现功能基础上,增加以下功能实现网络对战功能1)添加网络功能,使两台或者多台不同计算机的玩家通过一定的网络连接,加入
23、到游戏中;2)能够自主分组并选择角色,填写自己的游戏信息,各个玩家之间实现网络对战功能,并且同是一方的坦克不能相互攻击;733系统功能设计331坦克大战总体功能设计坦克大战游戏主要实现玩家参加游戏的整个流程,用户登陆游戏客户端选择游戏模式,可分为单机模式和网络对战模式,选择单机模式可以直接进入游戏状态;选择网络对战模式,在启动服务器后,玩家需要选择自己的角色,用户名和ID等玩家相关资料,成功后使用其账号进行登录游戏(只有成功登录的玩家才能参与网络对战游戏功能);登陆玩家就可以通过控制键盘操作,加入对战游戏。整个网络版坦克大战游戏流程图如图31所示图31网络坦克大战游戏流程332TANKCLIE
24、NT类基本功能分析TANKCLIENT类是整个系统的核心部分,它承担整个系统的所有可实现功能的调度工作。是整个游戏运行的场所。TANKCLIENT类设计流程图如图32所示初始化游戏模式对战对战随机产生敌方坦克玩家坦克判断胜负玩家一玩家二玩家一玩家二敌方坦克我方坦克判断胜负结束选择角色,填写信息8图32TANKCLIENT类设计流程TANKCLIENT类是主类,通过调用其他类中封装的方法来使整个系统运行起来,下面显示TANKCLIENT与各个类之间的关系如图33所示图33游戏系统类关联图333TANK类基本功能分析TANK(坦克)类中,封装了一些变量属性,包括坦克自己的大小(WIDTH,HRIG
25、HT),运开始初始化坦克对战双方玩家坦克由键盘控制移动发射炮弹碰撞检测(坦克和子弹)不处理同角色坦克产生爆炸不同角色坦克判断胜负结束TANKCLIENT类(主类)TANK类(我方)TANK类(敌方)NEW参数1NEW参数2调用MISSILE类打中调用EXPLODE类产程爆炸判断胜负键盘控制移动键盘控制移动打击9动速度SPRRD_X在X轴方向的速度;SPEED_Y在Y轴方向的速度、生命值控制(LIFE)、坦克编号(ID)、坦克名NAME、方向控制DIR、生死控制LIVE、好坏控制GOOD的变量等。TANK类中没有MAIN函数,不是主类,它当中只封装一些变量属性和静态方法,被TANKCLIENT类
26、调用来实现坦克的一系列动作。TANK类中的主要方法罗列如下(1)GETRECT方法PUBLICRECTANGLEGETRECTRETURNNEWRECTANGLEX,Y,THISWIDTH,THISHEIGHT;RECTANGLE类是碰撞检测的辅助类,通过得到子弹的X,Y坐标和宽高度,检测两个矩形是否碰撞(相交);(2)DRAW()方法负责将所有的活动在屏幕上画出来;(3)MOVE()方法主要负责控制坦克的移动,包括8个方向(左,左上,上,右上,右,右下,下,左下)的控制以及给坦克一个移动的速度;(4)KEYPRESSED方法设定使用键盘的“”“”“”“”键控制坦克移动;(5)KEYRELEA
27、SED方法处理按键抬起事件,抬起“CTRL”键时,发射炮弹并加入新炮弹,能够逐一发射每一发炮弹、抬起“A”键可以发射超级炮弹等功能;(6)LOCATIONDIRECTION方法定义了炮筒方向,可以向八个方向发射炮弹;(7)FIRE方法处理发送子弹的方法;(8)BUMPWITHWALL()方法主要负责处理坦克撞墙事件;(9)BUMPWITHTANK方法主要到负责处理坦克和坦克相撞事件;334MISSILE类基本功能分析MISSLILE子弹类和TANK类一样,只封装一些变量属性和静态方法,主要变量包括子弹自己的大小(WIDTH,HRIGHT),运动速度SPRRD_X在X轴方向的速度;SPEED_Y
28、在Y轴方向的速度、子弹标示(ID)、所属坦克的ID号TANKID用于网络版等。MISSLIE类持有一个TANKCLIENT类(大管家)的引用TC,TANKCLIENT类要执行发射炮弹操作时调用MISSILE类中的方法。MISSLIE类中的主要方法如下(1)DRAW()方法负责画出子弹的所有活动;(2)MOVE()方法先判断方向再移动,并给它一定的移动速度;(3)GETRECT()方法负责取得子弹的外切方形,为碰撞检测做准备;(4)HITTAN()方法检测子弹是否撞到坦克,若撞到返回TRUE,否则返回FALSE;(5)HITTANKS()方法检测是否撞到一系列坦克中的一个;(6)HITWALL(
29、)方法检测子弹和墙是否相撞。335EXPLODE类基本功能分析EXPLODE爆炸类也是一个只封装自己的变量和方法的外部包装类,没有MAIN方法,供10TANKCLIENT主类需要时调用它的DRAW()方法,当子弹击中坦克时需要产生爆炸。使用11张图片重叠现实爆炸效果如34图所示图34爆炸图336服务器类基本功能分析TANKSERVER(服务器)类主要负责在网络对战游戏时维护各个在线玩家的基本信息,并动态的维护玩家列表。联机模式下类关系图如图35所示35联机模式类关联图337信息传送类基本功能分析信息传送类就是用来封装客户端和服务器端的交互信息。将网络中传递的众多信息封装成可序列化的类,将会使程
30、序有很好的可扩展性。34本章小结本章首先对整个游戏设计进行了可行性分析,其次对游戏要达到怎么样的需求,要实现哪些功能做以及实现这些功能设计到的类,最后再详细的介绍了系统要实现这些功能所涉及到的各个类之间的关系。TANKSERVER类TANKCLIENT1类类TANKCLIENT2类类NEW参数1NEW参数2调用MISSILE类调用EXPLODE类产程爆炸判断胜负TANK类(我方)TANK类(敌方)打中打击11第4章系统实现41游戏主窗体实现TANKCLIENT类负责画出游戏主窗体,它是整个游戏运行和所有活动的场所。登陆主窗口后,主界面上包括两个下拉菜单条,“游戏”和“帮助”,玩家点击“游戏”菜
31、单条下可以选择游戏模式;“帮助”下拉菜单条中有游戏说明和游戏操作,方便用户了解游戏规则。为了游戏不至于太单调,还配置了背景音乐。除此之外,本设计优点是TANKCLIENT类还封装了一个UPDATE方法,使用双缓冲消除闪烁现象。因为刷新重画频率太快,PAINT()方法还没有完成,会造成逐条显示,影响系统的运行,所以解决办法是创建一个虚拟屏幕,在屏幕的后面,在要画的将所有的东西画在虚拟屏幕上,也就是内存上,画完之后一次性将虚拟屏幕上的内容贴到屏幕上,这样就消除了闪烁现象,用户的眼睛便感觉不到闪烁了。TANKCLIENT类是整个系统的“大管家”,当要执行某动作时,“大管家”只需要调用各个类中封装好的
32、方法,让被调用的类自己去执行它自己的方法,这更体现了面向对象的思想。游戏主窗体界面如图41所示图41游戏主窗口预览效果图实现虚拟屏幕消除闪烁的关键代码如下PUBLICVOIDUPDATEGRAPHICSG/利用双缓冲消除闪烁的效果IFOFFSCREENIMAGENULLOFFSCREENIMAGETHISCREATEIMAGEGAME_WIDTH,GAME_HEIGHT12GRAPHICSGOFFSCREENOFFSCREENIMAGEGETGRAPHICSCOLORCGOFFSCREENGETCOLORGOFFSCREENSETCOLORCOLORBLACKGOFFSCREENFILLREC
33、T0,0,GAME_WIDTH,GAME_HEIGHTGOFFSCREENSETCOLORCPAINTGOFFSCREENGDRAWIMAGEOFFSCREENIMAGE,0,0,NULL42单机游戏的实现游戏运行主界面,在下拉菜单中选择单机游戏进入单人模式,通过键盘控制坦克运动,相互对战,当被打中时产生一个爆炸,屏幕左上方显示游戏信息子弹数目(出界就死亡)、爆炸数目、敌方坦克数目、玩家坦克生命值(当玩家坦克被击中4次时,游戏结束)、玩家得分。其效果图如图42所示图42单机游戏模式主界面图当玩家分数达到60分时可以使用超级炮弹,可同时向八个方向发射炮弹,效果如图43玩家坦克,上方红色小方框为生
34、命值,当被击中一次时生命值减20血块用于添加生命值墙13所示图43发射超级炮弹当玩家被炮弹击中达到4次,而又没有及时吃到增长生命的血块时,提示游戏结束,可以选择重新开始或退出该模式,效果如图44所示图44玩家死亡时游戏界面1443联机功能实现在本系统的实现过程中,在支持网络对战的服务器类的定义中需要使用SERVERSOCKET类来响应多个客户端连接请求,SERVER服务器上需要两大协议,一个是TCP,用来接收客户端;另一个是UDP,用来转发游戏的数据。SERVER类系统模型图如图45所示图45SERVER类系统简单模型图网络游戏模式下,游戏主要在客户端运行,启动客户端时玩家首先要填写信息之后才
35、能加入到游戏中去,先启动服务器,红色小方块表示确定服务器已连接。如图46所示图46启动服务器进入网络模式,输入信息IP、PORT、选择自己的角色【P(警)B(匪)】,是玩家加入游戏的必填栏。游戏主界面图如图47所示图47网络版游戏玩家信息栏填写好玩家信息,登陆后游戏主界面,进入游戏后,通过玩家坦克上方的ID号(单双数)和颜色(蓝红)来区分敌友。游戏界面左上角显示游戏的基本信息,包括玩家姓名,对战坦克数等,如图48所示SERVERTCPLISTENERUDPLISTENER接收客户端连接转发游戏数据15图48登陆网络模式主界面多个玩家加入后,开始对战,在此模式中没有吃血块,添加生命值这一功能,所
36、以一旦中弹就死亡被淘汰出局,各个玩家游戏界面上都能显示实时动态,效果如图49所示图49网络版游戏对战实时显示图16网络模式设计主要代码如下TANKSERVER(服务器)类代码片段如下PUBLICCLASSTANKSERVERPUBLICSTATICFINALINTTCP_PORT8888/TCP的监听端口PUBLICSTATICFINALINTUDP_PORT6666/UDP的监听端口PUBLICSTATICINTID100LISTCLIENTSNEWARRAYLISTPUBLICVOIDSTRAT/启动服务器NEWTHREADNEWUDPTHREADSTARTSERVERSOCKETSSNU
37、LLSOCKETSNULLTRYSSNEWSERVERSOCKETTCP_PORTCATCHIOEXCEPTIONEEPRINTSTACKTRACEWHILETRUE/链接TCPTRYSSSACCEPTDATAINPUTSTREAMDISNEWDATAINPUTSTREAMSGETINPUTSTREAMINTUDPPORTDISREADINTSTRINGIPSGETINETADDRESSGETHOSTADDRESSCLIENTCNEWCLIENTIP,UDPPORTDATAOUTPUTSTREAMDOSNEWDATAOUTPUTSTREAMSGETOUTPUTSTREAMDOSWRITEINT
38、IDCLIENTSADDCSYSTEMOUTPRINTLN“ACLIENTCONNECTEDADDR_“IP“SGETPORT“_UDPPORT“UDPPORTCATCHIOEXCEPTIONEEPRINTSTACKTRACEPRIVATECLASSUDPTHREADIMPLEMENTSRUNNABLE/建立一个UDP的接受和转发线程BYTEBUFNEWBYTE102417PUBLICVOIDRUNDATAGRAMSOCKETDSNULLTRYDSNEWDATAGRAMSOCKETUDP_PORTSYSTEMOUTPRINTLN“UDPTHREADSTARTEDATPORT“UDP_PORTW
39、HILEDSNULLDATAGRAMPACKETDPNEWDATAGRAMPACKETBUF,BUFLENGTHDSRECEIVEDP/接受数据包FORINTI0ICLIENTSSIZEI/分别转发给其他客户端CLIENTCCLIENTSGETIDPSETSOCKETADDRESSNEWINETSOCKETADDRESSCIP,CUDPPORT/得到将要转发的客户端的IP地址和端口DSSENDDPSYSTEMOUTPRINTLN“APACKETSENTTOPORT“CUDPPORTCATCHSOCKETEXCEPTIONEEPRINTSTACKTRACE44本章小结本章主要介绍了该系统的实现和
40、运行,分别叙述了在单机模式和网络对战模式下游戏的运行和调试过程。在单机模式下,玩家的游戏发射火力要比电脑随机产生的坦克能力稍强一些,当分数值达到一定时,玩家可以发射超级炮弹。网络模式下,注意一定要先启动服务器,只有启动服务器后,各个玩家才能加入游戏。到此为止,本设计基本完成预期效果。18第5章总结与展望51总结本次设计已是大学最后一次对专业知识的综合实践活动,同时也是我所做的工作量最大的一次作业,因此从一开始我对本次毕业设计就给予了高度重视。从选题、收集资料、学习相关技术到实际编程,我都一丝不苟的对待了。当然其间我也走了不少弯路,有时甚至需要推倒重来,但同时我也多次体会过克服困难后的成就感。通
41、过这次毕业设计以及撰写本毕业论文,我学会了一些编程技巧,而且对调试的错误有进一步的认识,有时候就一个小小的语法错误就会导致程序调试不通过。所以每个字符,每句程序都要认真对待。使用不同的编程环境,其效率完全不一样,所以我选择了ECLIPSE,它自动找错/纠错功能、DEBUG调试和代码自动生成等一些重要的功能大大提高了我的设计效率。对于设计论文,一定要注意格式,认识事情都有它的规则、规范,不能按个人喜好随意改变。52设计中的不足之处本系统实现了坦克游戏所应有的基本功能,但是由于时间和能力有限,还有一部分功能未能实现,例如外部文件读取、地图设定、升级、坦克的高级人工智能控制等,不能和现在INTERN
42、ET上各种坦克大战游戏相媲美。还有就是对部分功能在设计过程中未能做到更加完善,稍有瑕疵,游戏时偶尔还会产生闪烁现象,但是已经尽力改善了。还有就是当运行网络模式时,必须专门启动服务器,而不是一键启动。对于玩家里来说有点麻烦。53展望本系统基本实现了坦克游戏所应有的基本功能,在大学中最后一次专攻式的学习了JAVA语言,使我对JAVA语言有了更深层次的理解,通过该游戏设计,提高了我的编程能力,也让我养成了良好的编程习惯。希望在今后自己能继续对J2SE等技术进行深入的学习和研究。19致谢经过三个多月的忙碌和工作,本次毕业设计业已完成了,作为一个本科生的毕业设计,由于经验的匮乏和业务逻辑的不熟悉,难免有
43、许多考虑不周全和不完善的地方,但是在指导老师和宿舍同学的帮助下很多困难都得以解决,所以在此本人要特别感谢他们对我的帮助。首先我要感谢我的指导老师林巧老师,感谢她在整个毕业设计过程中的指导,为我提示游戏设计的逻辑思路;为我提供参考书籍;为我提供了技术方面资料,而且在遇到问题的时候,总是鼓励我去解决;尤其在论文格式的修改方面,让我明白了要写出一个标准的论文,它的格式的重要性,哪怕就算是一个标点符号都要符合其标准和格式要求。在设计的整个过程中从开题报告的确定到初稿的修改,以及中期检查,以及定稿的过程中都给予了我细心的指导。其次还要特别感谢大学四年来所有的老师,为我们打下计算机专业知识的基础。以前总是
44、觉得学的课程没有什么用处,但是当真正用计算机来解决实际问题的时候,才知道每门课程的重要性,甚至觉得所学习的那些课程还远远不够,所以以后还应该不断的学习。也可以这么说要不是您们在大学四年中严格要求我们,现在要完成整个毕业设计那是根本不可能的。再次,感谢我们小组的几位同学,在我遇到一些难以解决的问题时,给与我支持,鼓励和帮助,在论文撰写过程中,认真仔细的帮我修改,包括一些难以发觉的语法,符号错误,使我受益匪浅。最后感谢我的院系和我的母校伊犁师范学院四年来对我的精心培养。20参考文献1姜志强编著JAVA语言程序设计M北京电子工业出版社,20072侯俊杰编著JAVA语言应用开发基础M3孙更新,宾晟,吕
45、婕编著JAVA毕业设计指南与项目实践M北京科技出版社,20074杜江,管佩森编著JAVA使用编程100例M北京中国贴到出版社,20045殷兆麟编著JAVA语言程序设计M北京高等教育出版社,20026侯俊杰编著JAVA程序设计教程与实训M北京科学出版社,20057赵强,陈洪译著JAVA程序设计高级主题M北京北京大学出版社,20048电脑编程技巧与维护杂志社编著JAVA编程技巧典型案例解析J北京中国电力出版社,20059张基温,朱嘉钢,张景莉编著JAVA程序开发教程M北京清华大学出版社,200210丁来佳,周静基于JAVA平台事件驱动模型的研究与设计J黄冈师范学院学报,2008,S121JAVAB
46、ASEDWEBVERSIONOFBATTLECITYGAMEDESIGNLVYANDEPARTMENTOFCOMPUTERSCIENCE,CLASS2,2006YILINORMALUNIVERSITY,YINING835000,XINJIANG【ABSTRACT】THEDESIGNOFOBJECTORIENTEDDESIGNPATTERNS,ALLTHEOBJECTSONINTHEGAMETOGIVETHECONCEPTOFOBJECTSANDATTRIBUTESAFTERRUNNINGTHEPROGRAMALLOWSTHEUSERTOSELECTTHEIMPLEMENTATIONOFTHEO
47、PTIONSMENUATTHEBEGINNINGOFTHEGAME,STARTTHESERVERANDCLIENT,ALLOBJECTSONTHEBACKGROUNDGRAPHICSTHREADRUNNINGINTHEMAINPROGRAM,THESCREENREFRESHFREQUENCYWILLBESOMEDOUBLEBUFFERTECHNOLOGYTOREDRAWTHESCREENINREALTIMETOREFLECTTHESTATEOFTHEGAMEUSERCONTROLLEDTANKSTORUNINTHEMAINTHREAD,WITHTHESCREENREFRESHFREQUENCYOFTHEMOVEMENTTANKWILLSTARTTOINITIALIZETHEGAME,ANDTHENDRAWTHEMAPOFTHEUPPERTANKDESIGNEDTOACHIEVETHEMAINFUNCTIONISTOALLOWTANKSTOMOVEANDBEABLETOPLAYSMARTBOMBS,DODGEBULLETS,TOBLOWUPOTHERTANKSTOSUPPORTONLINEPLAYANDSINGLEPLAYAGAINSTTWOMODESKEYWORDSOBJECTORIENTEDBATTLECITYONLINEGAMESJAVASOCKETCLASS