基于java坦克大战课程设计报告摘要随着计算机的普及以及对电子游戏的认识,电子游戏已被越来越多的人选作放松、娱乐的休闲方式;电子游戏既不需要专门购买游戏器材,也不需要宽阔的游戏场地,只需要一台能独立完成任务的计算机即可,它可以是人们工作、学习时用的计算机,并不需要另行配置,这比起传统休闲游戏即省钱又省事。局域网游戏更是可以将现实空间中零散的计算机,组织起来,使其在逻辑空间中集中起来,使游戏的组织、开展变得轻松。如此轻松而又安逸的休闲方式,使得越来越多的人尝试,甚至已经将电子游戏作为主要休闲方式,既然有如此多的人使用,那其中必然存在巨大的商机,即使人们不愿意为一个小小的休闲游戏花费金钱,但在游戏中添加广告、游戏相关服务也包藏了巨大的财富;当然电子游戏的制作如今已是空前的火爆,大大小小的游戏公司横空出世,都想在电子游戏制作这个行业里占据一席之地,而一款成功的电子游戏需要精心的策划、分析、设计,只有这样才能获得游戏中包藏的财富,以及做出一款真正能够让玩家娱乐、放松的游戏,而不是骗取玩家钱财的工具。关键字:局域网;电子游戏;坦克大战;-1-目录一、系统分析............................................................................................................................-1-可行性分析..........................................................................................................................-1-需求分析..............................................................................................................................-1-二、概要设计............................................................................................................................-2-工作流程图..........................................................................................................................-2-项目规划..............................................................................................................................-3-开发及运行环境..................................................................................................................-3-三、详细设计与算法实现........................................................................................................-4-游戏主窗口..........................................................................................................................-4-网络管理..............................................................................................................................-6-封装的游戏元素..................................................................................................................-8-四、测试..................................................................................................................................-10-测试环境............................................................................................................................-10-测试结果............................................................................................................................-10-五、软件截图..........................................................................................................................-11-六、总结..................................................................................................................................-14-七、参考文献..........................................................................................................................-15-JAVA程序设计---------局域网游戏-坦克大战-1-一、系统分析可行性分析技术可行性软件使用swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现使用这些技术是可行的。经济可行性本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务,从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放弃开发,以减少损失。需求分析通过反复研究以及市场调查,得知游戏须具有以下功能:需要有图形游戏界面,让用户能看到游戏给出的反馈有人机交互功能,使用户能操作指定的游戏元素不同队伍的坦克,须显示不同外观,已分辨敌我坦克能够开火,攻击敌方,但不能攻击队友需要有不可被子弹穿透的墙,且墙有可摧毁和不可摧毁两种坦克有生命值,并非被击中一次就会爆炸坦克爆炸后将产生道具,拾到道具的坦克可加满生命值游戏须提供网络支持,即局域网联网对战玩家在游戏中可以发言,即群聊功能须在玩家之间设立房主,掌管游戏何时开始游戏结束时须判断哪一队胜利游戏结束后可重新开始游戏的操作、进度等须提供相应说明,以告知玩家JAVA程序设计---------局域网游戏-坦克大战-2-二、概要设计工作流程图程序开始连接服务器连接成功?YN新线程刷屏(间接调用paint)延迟25ms初始化游戏元素根据游戏元素的属性,对其经行操作和绘出其图形Paint方法战斗结束?Y键盘监听器判断按下的是那个键改变相应游戏元素的属性JAVA程序设计---------局域网游戏-坦克大战-3-项目规划本游戏是一个典型的局域网对战游戏,应具有如下结构:游戏主窗口游戏的一切效果、进度、消息等都将由游戏主窗口展示网络管理负责发送、接收网络数据,以及如何处理这些数据封装的游戏元素游戏元素包括:坦克、子弹、爆炸效果、墙、道具等游戏必须的元素开发及运行环境开发时硬件环境CPU:InterP7350显卡:NVIDIAGeForce9600MGS内存:威刚2G/DDR2-667显示器:三星液晶15.4寸/分辨率:1280X800开发时软件环境操作系统:Windows7JDK:1.5.0IDE:Eclipse3.4.0运行时硬件环境CPU:InterE5200显卡:NVIDIAGeForce7300GS内存:金士顿2G/DDR2-667运行时软件环境操作系统:WindowsXpJRE:1.6.0显示器:三星液晶19寸/分辨率:1440X900JAVA程序设计---------局域网游戏-坦克大战-4-三、详细设计与算法实现游戏主窗口游戏主窗口是人机交互的窗口,对玩家而言,他们只和游戏主窗口打交道,并不关心游戏内部是如何实现的,所以游戏主窗口部分最重要的便是游戏数据的输入、输出。在程序中须创建一个类TankClient,继承自Frame来创建一个窗口。游戏数据的输入游戏中坦克需要能往上、下、左、右四个方向运动,故须设立4个按键,使其能操作坦克,另须设一个键控制坦克开火。为方便操作,本游戏设置WSAD分别表示上下左右,小键盘数字键4,表示开火。具体实现为,为窗口添加KeyListener(键盘监听器),监听键盘的按下和抬起。在TankClient类中添加内部的适配器类,由于不需要其它类访问,将其设计为private的,以保证面向对象设计的封装性。代码如下:/**移动按键键盘监听器*/privateclassMoveKeyLextendsKeyAdapter{publicvoidkeyPressed(KeyEvente){switch(e.getKeyCode()){caseKeyEvent.VK_A:myTank.keyDownToDir(Direction.L);break;caseKeyEvent.VK_W:myTank.keyDownToDir(Direction.U);break;caseKeyEvent.VK_D:myTank.keyDownToDir(Direction.R);break;caseKeyEvent.VK_S:myTank.keyDownToDir(Direction.D);break;}}publicvoidkeyReleased(KeyEvente){switch(e.getKeyCode()){caseKeyEvent.VK_A:myTank.keyUpToDir(Direction.L);break;caseKeyEvent.VK_W:JAVA程序设计---------局域网游戏-坦克大战-5-myTank.keyUpToDir(Direction.U);break;caseKeyEvent.VK_D:myTank.keyUpToDir(Direction.R);break;caseKeyEvent.VK_S:myTank.keyUpToDir(Direction.D);break;}}}/**开火按键键盘监听器*/privateclassFireKeyLextendsKeyAdapter{publicvoidkeyReleased(KeyEvente){switch(e.getKeyCode()){caseKeyEvent.VK_NUMPAD4:myTank.fire();newTankFireMsg().send();break;}}}游戏数据的输出玩家需要从游戏输出数据中获得