基于java坦克大战课程设计报告

上传人:第*** 文档编号:55659720 上传时间:2018-10-03 格式:PDF 页数:17 大小:861.75KB
返回 下载 相关 举报
基于java坦克大战课程设计报告_第1页
第1页 / 共17页
基于java坦克大战课程设计报告_第2页
第2页 / 共17页
基于java坦克大战课程设计报告_第3页
第3页 / 共17页
基于java坦克大战课程设计报告_第4页
第4页 / 共17页
基于java坦克大战课程设计报告_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《基于java坦克大战课程设计报告》由会员分享,可在线阅读,更多相关《基于java坦克大战课程设计报告(17页珍藏版)》请在金锄头文库上搜索。

1、基于基于 java 坦克大战课程设计报告坦克大战课程设计报告摘摘 要要随着计算机的普及以及对电子游戏的认识, 电子游戏已被越来越多的人选作放松、 娱乐 的休闲方式;电子游戏既不需要专门购买游戏器材,也不需要宽阔的游戏场地,只需要一台 能独立完成任务的计算机即可, 它可以是人们工作、 学习时用的计算机, 并不需要另行配置, 这比起传统休闲游戏即省钱又省事。 局域网游戏更是可以将现实空间中零散的计算机, 组织 起来,使其在逻辑空间中集中起来,使游戏的组织、开展变得轻松。如此轻松而又安逸的休 闲方式,使得越来越多的人尝试,甚至已经将电子游戏作为主要休闲方式,既然有如此多的 人使用,那其中必然存在巨大

2、的商机,即使人们不愿意为一个小小的休闲游戏花费金钱,但 在游戏中添加广告、 游戏相关服务也包藏了巨大的财富; 当然电子游戏的制作如今已是空前 的火爆,大大小小的游戏公司横空出世,都想在电子游戏制作这个行业里占据一席之地,而 一款成功的电子游戏需要精心的策划、分析、设计,只有这样才能获得游戏中包藏的财富, 以及做出一款真正能够让玩家娱乐、放松的游戏,而不是骗取玩家钱财的工具。关键字: 局域网;电子游戏;坦克大战;- 1 -目目 录录一、 系统分析- 1 -可行性分析- 1 -需求分析- 1 -二、 概要设计- 2 -工作流程图- 2 -项目规划- 3 -开发及运行环境- 3 -三、 详细设计与算

3、法实现- 4 -游戏主窗口- 4 -网络管理- 6 -封装的游戏元素- 8 -四、 测试 - 10 -测试环境- 10 -测试结果- 10 -五、 软件截图 - 11 -六、 总结 - 14 -七、 参考文献- 15 -JAVA 程序设计-局域网游戏-坦克大战- 1 -一、系统分析可行性分析技术可行性技术可行性 软件使用 swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常 成熟的技术,之前已有相当多使用这些技术的成功案例,故现使用这些技术是可行的。 经济可行性经济可行性 本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件暂无收入,待 公布之后随着使用者越来越

4、多,将添加相应的广告、服务,从而增加收入,若使用者寥 寥无几,将再次分析是否重新策划软件或者放弃开发,以减少损失。需求分析通过反复研究以及市场调查,得知游戏须具有以下功能:需要有图形游戏界面,让用户能看到游戏给出的反馈有人机交互功能,使用户能操作指定的游戏元素不同队伍的坦克,须显示不同外观,已分辨敌我坦克能够开火,攻击敌方,但不能攻击队友需要有不可被子弹穿透的墙,且墙有可摧毁和不可摧毁两种坦克有生命值,并非被击中一次就会爆炸坦克爆炸后将产生道具,拾到道具的坦克可加满生命值游戏须提供网络支持,即局域网联网对战玩家在游戏中可以发言,即群聊功能须在玩家之间设立房主,掌管游戏何时开始游戏结束时须判断哪

5、一队胜利游戏结束后可重新开始游戏的操作、进度等须提供相应说明,以告知玩家JAVA 程序设计-局域网游戏-坦克大战- 2 -二、概要设计工作流程图程序开始连接服务器连接成YN新线程刷屏(间接 调用 paint)延 迟 25 ms初始化游戏元素根据游戏元素的属性,对 其经行操作和绘出其图形Paint 方法战斗结束?Y键盘监听器判断按下的是那个键改变相应游戏 元素的属性JAVA 程序设计-局域网游戏-坦克大战- 3 -项目规划本游戏是一个典型的局域网对战游戏,应具有如下结构:游戏主窗口 游戏的一切效果、进度、消息等都将由游戏主窗口展示网络管理 负责发送、接收网络数据,以及如何处理这些数据封装的游戏元

6、素 游戏元素包括:坦克、子弹、爆炸效果、墙、道具等游戏必须的元素开发及运行环境开发时硬件环境开发时硬件环境CPU:Inter P7350显卡:NVIDIA GeForce 9600M GS内存:威刚 2G/DDR2-667显示器:三星液晶 15.4 寸/分辨率:1280X800 开发时软件环境开发时软件环境操作系统:Windows7JDK:1.5.0IDE:Eclipse3.4.0 运行时硬件环境运行时硬件环境CPU:Inter E5200显卡:NVIDIA GeForce 7300 GS内存:金士顿 2G/DDR2-667 运行时软件环境运行时软件环境操作系统:Windows XpJRE:1

7、.6.0显示器:三星液晶 19 寸/分辨率:1440X900JAVA 程序设计-局域网游戏-坦克大战- 4 -三、详细设计与算法实现游戏主窗口游戏主窗口是人机交互的窗口,对玩家而言,他们只和游戏主窗口打交道,并不关心游 戏内部是如何实现的,所以游戏主窗口部分最重要的便是游戏数据的输入、输出。 在程序中须创建一个类 TankClient,继承自 Frame 来创建一个窗口。 游戏数据的输入游戏数据的输入 游戏中坦克需要能往上、下、左、右四个方向运动,故须设立 4 个按键,使其能操 作坦克,另须设一个键控制坦克开火。为方便操作,本游戏设置 WSAD 分别表示上下 左右,小键盘数字键 4,表示开火。

8、 具体实现为,为窗口添加 KeyListener(键盘监听器) ,监听键盘的按下和抬起。在 TankClient 类中添加内部的适配器类,由于不需要其它类访问,将其设计为 private 的, 以保证面向对象设计的封装性。 代码如下: /* 移动按键键盘监听器 */ private class MoveKeyL extends KeyAdapter public void keyPressed(KeyEvent e) switch (e.getKeyCode() case KeyEvent.VK_A: myTank.keyDownToDir(Direction.L); break; case

9、KeyEvent.VK_W: myTank.keyDownToDir(Direction.U); break; case KeyEvent.VK_D: myTank.keyDownToDir(Direction.R); break; case KeyEvent.VK_S: myTank.keyDownToDir(Direction.D); break; public void keyReleased(KeyEvent e) switch (e.getKeyCode() case KeyEvent.VK_A: myTank.keyUpToDir(Direction.L); break; case

10、 KeyEvent.VK_W:JAVA 程序设计-局域网游戏-坦克大战- 5 -myTank.keyUpToDir(Direction.U); break; case KeyEvent.VK_D: myTank.keyUpToDir(Direction.R); break; case KeyEvent.VK_S: myTank.keyUpToDir(Direction.D); break; /* 开火按键键盘监听器 */ private class FireKeyL extends KeyAdapter public void keyReleased(KeyEvent e) switch (e

11、.getKeyCode() case KeyEvent.VK_NUMPAD4: myTank.fire(); new TankFireMsg().send(); break; 游戏数据的输出游戏数据的输出 玩家需要从游戏输出数据中获得游戏信息,如坦克在往上行驶、坦克发了颗子弹、 坦克爆炸等,这些均需要通过游戏数据的输出来告知玩家。 由于 TankClient 继承自 Frame,Frame 类中的方法 paint,可以在窗口中绘制图形, 即满足了游戏需要图形界面的需求;另有方法 repaint 可以刷新窗口,以及时提供游戏 信息,故须创建线程,不断地刷新窗口,来获取最新的游戏信息。 代码如下:

12、 public void paint(Graphice g) for (int i = 0; i allGE.size(); i+) int allGEOldSize = allGE.size(); GameElement ge = allGE.get(i);if (ge instanceof Moveable) Moveable moveable = (Moveable) ge; moveable.move(); ge.draw(g);JAVA 程序设计-局域网游戏-坦克大战- 6 -/* 如果容器数量减少,则减少相应的遍历索引i */ if (0 allGEOldSize - allGE.

13、size() i -= allGEOldSize - allGE.size(); /* 刷屏线程,负责画面的刷新以及游戏时间的推进 */ private class MyTh implements Runnable public void run() while (true) repaint(); try Thread.sleep(25); catch (InterruptedException e) e.printStackTrace(); 为使游戏主窗口效率更高、更容易被引用,且游戏主窗口只有一个,故 TankClient类使用单例模式来设计: private static final T

14、ankClient tc = new TankClient(); private TankClient() . public static TankClient getTc() return tc; 网络管理游戏需要对局域网对战的支持, 所以需要对网络数据进行管理, 使游戏能有条不紊地运 行, 网络管理部分主要负责输入游戏数据后发往其它游戏客户端, 以及接收其它客户端发来 的游戏数据。需要发送的游戏数据有:坦克创建消息(TankCreateMsg) 、坦克开火消息 (TankFireMsg)等客户端游戏数据的收发客户端游戏数据的收发 由于每个游戏消息都有共同的特性,即发送、接受,故将其抽象出一

15、个父类 Msg, 所有的消息类都继承自 Msg 类。 public abstract class Msg JAVA 程序设计-局域网游戏-坦克大战- 7 -public static final TankClient tc = TankClient.getTc();public static final int TANK_CREATE_MSG = 1; public static final int TANK_CHANGEDIR_MSG = 2; public static final int TANK_CALIBRATION_MSG = 3; public static final int

16、TANK_FIRE_MSG = 4; public static final int CHAT_WORD_MSG = 5; public static final int TANK_READY_MSG = 6; public static final int GAME_START_MSG = 7; public static final int GAME_OVER_MSG = 8; public static final int GAME_EXIT_MSG = 9; public static final int GAME_CHANGEMASTER_MSG = 10;public abstract void send();public abstract void r

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号