JAVA课程设计坦克大战游戏(含代码).doc
《JAVA课程设计坦克大战游戏(含代码).doc》由会员分享,可在线阅读,更多相关《JAVA课程设计坦克大战游戏(含代码).doc(24页珍藏版)》请在三一办公上搜索。
1、Java课程设计任 务 书简单电子游戏坦克大战的设计1、主要内容:设计一个简单的坦克大战电子游戏,可以允许多位玩家在局域网中同时对战2、 系统要求:游戏具有图形游戏界面,能让用户看到游戏所给出的反馈。有人机交互功能,使用户操作指定的游戏元素,并且坦克具有生命值,能攻击敌方,无法攻击友方,而且坦克的攻击具有视觉效果!3、 具体要求(包括技术要求等):1.需要有图形游戏界面,让用户能看到游戏给出的反馈2.有人机交互功能,使用户能操作指定的游戏元素3.不同队伍的坦克,须显示不同外观,已分辨敌我4.坦克能够开火,攻击敌方,但不能攻击队友5需要有不可被子弹穿透的墙6.坦克有生命值,并非被击中一次就会爆炸
2、7游戏结束后可重新开始学习并掌握以下技术:Java、JavaBean 等熟练使用以下开发工具:Myeclipse 等 实现系统上述的功能。4、 进度安排:12月28日 12月 29日:课程设计选题,查找参考资料 12月30日 1月1日: 完成系统设计和数据库设计1月2日 1月4日: 完成程序代码的编写1月4日 1月5日:系统测试与完善1月5日 1月6日:完成课程设计报告,准备答辩分工: 摘 要随着计算机的普及以及对电子游戏的认识,电子游戏已被越来越多的人选作放松、娱乐的休闲方式;电子游戏既不需要专门购买游戏器材,也不需要宽阔的游戏场地,只需要一台能独立完成任务的计算机即可,它可以是人们工作、学
3、习时用的计算机,并不需要另行配置,这比起传统休闲游戏即省钱又省事。局域网游戏更是可以将现实空间中零散的计算机,组织起来,使其在逻辑空间中集中起来,使游戏的组织、开展变得轻松。如此轻松而又安逸的休闲方式,使得越来越多的人尝试,甚至已经将电子游戏作为主要休闲方式,既然有如此多的人使用,那其中必然存在巨大的商机,即使人们不愿意为一个小小的休闲游戏花费金钱,但在游戏中添加广告、游戏相关服务也包藏了巨大的财富;当然电子游戏的制作如今已是空前的火爆,大大小小的游戏公司横空出世,都想在电子游戏制作这个行业里占据一席之地,而一款成功的电子游戏需要精心的策划、分析、设计,只有这样才能获得游戏中包藏的财富,以及做
4、出一款真正能够让玩家娱乐、放松的游戏,而不是骗取玩家钱财的工具。关键字:电子游戏;坦克大战;目 录一、 系统分析- 1 -可行性分析- 1 -需求分析- 1 -二、 概要设计- 2 -工作流程图- 2 -项目规划- 3 -开发及运行环境- 3 -三、 详细设计与算法实现- 4 -游戏主窗口- 4 -游戏元素- 8 -四、 测试- 10 -测试环境- 10 -测试结果- 10 -五、 软件截图- 11 -六、 总结- 14 -七、 参考文献- 15 -一、 系统分析可行性分析技术可行性软件使用swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常成熟的技术,之前已有相当多使
5、用这些技术的成功案例,故现使用这些技术是可行的。经济可行性本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务,从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放弃开发,以减少损失。需求分析通过反复研究以及市场调查,得知游戏须具有以下功能:q 需要有图形游戏界面,让用户能看到游戏给出的反馈q 不同队伍的坦克,须显示不同外观,已分辨敌我q 坦克能够开火,攻击敌方q 坦克有生命值q 游戏结束时须判断哪一队胜利q 游戏结束后可重新开始q 游戏的操作、进度等须提供相应说明,以告知玩家二、 概要设计工作流程图 程序开始初
6、始化游戏元素根据游戏的元素属性,对其进行操作和绘出去图形战斗结束?项目规划本游戏是一个典型的电子小游戏,应具有如下结构:q 游戏主窗口游戏的一切效果、进度、消息等都将由游戏主窗口展示q 封装的游戏元素游戏元素包括:坦克、子弹、等游戏必须的元素开发及运行环境开发时硬件环境q CPU:Inter P7350q 显卡:NVIDIA GeForce 105M q 内存:金士顿2G/DDR2-667q 显示器:三星液晶14寸/分辨率:1280X800开发时软件环境q 操作系统:Windows7q JDK:1.5.0q IDE:Eclipse3.4.0运行时硬件环境q CPU:Inter P7350q 显
7、卡:NVIDIA GeForce 105Mq 内存:金士顿2G/DDR2-667运行时软件环境q 操作系统:Windows 7q JRE:1.6.0q 显示器:三星液晶14寸/分辨率:1280X800q三、 详细设计与算法实现游戏主窗口游戏主窗口是人机交互的窗口,对玩家而言,他们只和游戏主窗口打交道,并不关心游戏内部是如何实现的,所以游戏主窗口部分最重要的便是游戏数据的输入、输出。在程序中须创建一个类TankClient,继承自Frame来创建一个窗口。游戏数据的输入游戏中坦克需要能往上、下、左、右四个方向运动,故须设立4个按键,使其能操作坦克,另须设一个键控制坦克开火。为方便操作,本游戏设置
8、方向键分别表示上下左右,空格表示开火。具体实现为在TankClient类中添加内部的适配器类代码如下:/* * 方向键被按下后标记被按下的键 * param e 键盘事件 */ public void keyPressed(KeyEvent e) int keyCode = e.getKeyCode(); switch (keyCode) case KeyEvent.VK_LEFT: bL = true; break; case KeyEvent.VK_UP: bU = true; break; case KeyEvent.VK_RIGHT: bR = true; break; case Ke
9、yEvent.VK_DOWN: bD = true; break; case KeyEvent.VK_CONTROL: if (!this.hasMyMissile() fire(); break; case KeyEvent.VK_A: superFire(); break; case KeyEvent.VK_F2: tc = null; new TankClient(TankClient, 50, 10, 3); break; locateDirection(); /* * 方向键被松开后标记被松开的键 * param e 键盘事件 */ public void keyReleased(K
10、eyEvent e) int keyCode = e.getKeyCode(); switch (keyCode) case KeyEvent.VK_LEFT: bL = false; break; case KeyEvent.VK_UP: bU = false; break; case KeyEvent.VK_RIGHT: bR = false; break; case KeyEvent.VK_DOWN: bD = false; break; locateDirection(); /* * 根据按下的键定位方向 */ public void locateDirection() if (bL
11、& !bU & !bR & !bD) dir = Direction.L; if (bL & bU & !bR & !bD) dir = Direction.LU; if (!bL & bU & !bR & !bD) dir = Direction.U; if (!bL & bU & bR & !bD) dir = Direction.RU; if (!bL & !bU & bR & !bD) dir = Direction.R; if (!bL & !bU & bR & bD) dir = Direction.RD; if (!bL & !bU & !bR & bD) dir = Direc
12、tion.D; if (bL & !bU & !bR & bD) dir = Direction.LD; if (!bL & !bU & !bR & !bD) dir = Direction.STOP; /* * 根据方向移动坦克 */ public void move() lastX = x; lastY = y; switch (dir) case L: x -= SPEED; break; case LU: x -= XYSPEED; y -= XYSPEED; break; case U: y -= SPEED; break; case RU: x += XYSPEED; y -= X
13、YSPEED; break; case R: x += SPEED; break; case RD: x += XYSPEED; y += XYSPEED; break; case D: y += SPEED; break; case LD: x -= XYSPEED; y += XYSPEED; break; case STOP: break; if (dir != Direction.STOP) ptDir = dir; /控制坦克不出界 if (x 0) x = 0; if (y TankClient.WINDOW_WIDTH - this.RADIUS * 2) x = TankCli
14、ent.WINDOW_WIDTH - this.RADIUS * 2; if (y TankClient.WINDOW_HEIGHT - this.RADIUS * 2) y = TankClient.WINDOW_HEIGHT - this.RADIUS * 2; /* * 根据坦克的位置和炮筒的方向发射炮弹 */ public void fire() if (!this.live) return; int x = this.x + Tank.RADIUS - Missile.RADIUS; int y = this.y + Tank.RADIUS - Missile.RADIUS; Mis
15、sile m = new Missile(x, y, this.good, ptDir, this, tc); tc.missiles.add(m); /* * 画炮筒 * param g Graphics对象 */ public void drawPT(Graphics g) int x1 = this.x + Tank.RADIUS; int y1 = this.y + Tank.RADIUS; int x2 = this.x + Tank.RADIUS; int y2 = this.y + Tank.RADIUS; switch (ptDir) case L: x2 = x1 - PT_
16、LENGTH; break; case LU: x2 = x1 - PT_XY; y2 = y1 - PT_XY; break; case U: y2 = y1 - PT_LENGTH; break; case RU: x2 = x1 + PT_XY; y2 = y1 - PT_XY; break; case R: x2 = x1 + PT_LENGTH; break; case RD: x2 = x1 + PT_XY; y2 = y1 + PT_XY; break; case D: y2 = y1 + PT_LENGTH; break; case LD: x2 = x1 - PT_XY; y
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 坦克 大战 游戏 代码

链接地址:https://www.31ppt.com/p-2387038.html