《潜艇大作战Java课程设计》由会员分享,可在线阅读,更多相关《潜艇大作战Java课程设计(81页珍藏版)》请在金锄头文库上搜索。
1、 面向对象程序设计课程设计报告题 目: 潜艇大作战软件设计与实现 院 (系): 信息科学与工程学院 专业班级: 计算机科学与技术1201班 学生姓名: 程伟 学 号: 20121183011 指导教师: 吴奕 20 14 年 12 月 29 日至20 15 年 1 月 9 日华中科技大学武昌分校制 面向对象程序设计 课程设计任务书一、设计(调查报告/论文)题目 潜艇大作战软件设计与实现二、设计(调查报告/论文)主要内容内容:设计一个战舰猎捕潜艇的游戏,玩家以键盘输入来控制战舰的行动,猎杀潜艇获得分数,进入前十名有排名。 基本功能与要求:1首先绘制一个首页,首页包括开始,退出按钮,采用事件监听。
2、2进入游戏后使用,通过读取文件,读出以前的最好成绩,使用菜单按钮开始游戏。3通过方向键来控制潜艇的移动方向,空格键释放鱼雷。4 击中敌人后加分,同时被敌人击中一次就扣除一次机会,共三次机会三、原始资料1.面向对象程序设计课程设计指导书2. 耿祥义JAVA大学实用教程北京:清华大学出版社,2009四、要求的设计(调查/论文)成果1.课程设计报告2.课程设计软件五、进程安排布置任务,查找资料、需求分析1天总体设计1天详细设计1.5天编制源程序实现3.5天测试与修改1天撰写课设报告2天六、主要参考资料1 张广彬. Java课程设计案例精编(第二版).北京:清华大学出版社, 2011. 2 耿祥义.
3、Java课程设计(第二版).北京:清华大学出版社, 2008.3 耿祥义JAVA大学实用教程北京:清华大学出版社,20094 邹林达陈国君 Java2程序设计基础北京:清华大学出版社,20105 邹林达Java2程序设计基础实验指导北京:清华大学,2010指导教师(签名): 20 年 月 日目 录1需求与总体设计11.1需求分析11.1.1界面需求11.1.2性能需求11.2总体设计思路,功能图,类图11.2.1程序设计思路11.2.2功能图21.2.3类图32详细设计42.1详细设计思路与类的说明、细化42.1.1流程图42.1.2类的说明53编码实现63.1 JAVA编码实现64系统测试7
4、24.1开始游戏的界面724.2进入游戏并选择开始734.3暂停游戏的界面744.4前十名对话框与排名界面75总 结761需求与总体设计1.1需求分析1.1.1界面需求界面是一个窗口,游戏在此窗口上运行,窗口上有分数设置。1.1.2性能需求此游戏分敌方潜艇(若干)和我方战舰(生命值3条)两个角色,敌方潜艇在水下攻击我方战舰,我方战舰于水上猎杀敌方潜艇。1.2总体设计思路,功能图,类图1.2.1程序设计思路此游戏的关键点是潜艇是否被击中的判断,整个屏幕是个二维坐标系,军舰在一个水平位置移动,当在某个位置发射鱼雷,判断鱼雷的图片与不断移动的潜艇图片是否会有重合的地方,如果有发生爆炸,如果没有继续移
5、动。1.2.2功能图1.2.3类图2详细设计2.1详细设计思路与类的说明、细化2.1.1流程图本游戏的基本运行流程是启动后把整个画布昨为一个线程,随时准备响应用户按键操作K的响应,100ms扫描一次潜艇和水雷等物体的运行状态。在扫描潜艇和水雷运动时,执行各个物体画面的移动方法。程序并不为每隔新增潜艇和水雷开启一个新线程,太多线程会造成程序的性能直线下降;而是将每一个物体类型直接加入到画布中,每当一个新物体产生,将直接在画布上画出;当物体消除时,将直接在画布上被消除。这样就形成以种注册机制,所有游戏物体产生和消除都需要画布注册,画布拥有不同类型物体的所有“名单”,所有,当执行的命令只是需要遍历画
6、布中所有游戏物体,依次执行每隔游戏物体中定义的移动方法即可。2.1.2类的说明Blast:潜艇发射鱼雷击中战舰后爆炸的效果。Bum:炸弹FrameObservable:监听者模式来监听游戏画面切换。HelpDialog:游戏规则的对话框,提示游戏规则信息。Hit:潜艇被击中的爆炸效果。InfoDialog:关于我们的对话框,关于游戏的一些信息。InputDialog:玩家得分进图前十名的提示对话框。MainPanel:进图游戏的主界面面板。MyButton:绘制游戏背景MyDialog: 暂停游戏的提示对话框。MyFrame:游戏窗体。MyPanel:主程序ScoreDialog:玩家没有进入
7、前十名游戏就结束的提示对话框。Submarine:潜艇对象。SubmarineWarMain:重新开始游戏。TimeManager:计时器产生潜艇。TimeManager2:计时器产生鱼雷。Torpedo:潜艇发射的鱼雷对象。WallDialog:玩家进入前十名之后的成绩排名信息对话框。WarShip:战舰对象。3编码实现3.1 JAVA编码实现package com.stj.views;import java.awt.Color;import java.awt.Graphics2D;import java.util.Random;/* 潜艇发射的鱼雷击中战舰后爆炸的效果对象,原理:绘制多个从
8、小到大然后从大到小的圆显示爆炸效果 */public class Blast implements Runnableprivate int X; private int Y;private int r = 2,3,5,8,12,15,18,20,25,30,33,25,17,15,13,9,5; /圆的半径集合private int step = 0; /集合中圆的位置标记private boolean flag = false;public Blast(int x,int y)this.X = x;this.Y = y;public void drawBlast(Graphics2D g)R
9、andom random =new Random();int c = random.nextInt(2);if(c = 0)g.setColor( Color.RED);else if(c = 1)g.setColor(Color.ORANGE);if(this.step r.length)/System.out.println(draw);/g.setColor(Color.gray);g.fillOval(this.X, this.Y, this.rthis.step, this.rthis.step);/step +;public void run() while(!this.flag)
10、step +;/System.out.println(step);try Thread.sleep(10); catch (InterruptedException e) / TODO Auto-generated catch blocke.printStackTrace();if(this.step = r.length)this.flag = true;public int getX() return X;public void setX(int x) X = x;public int getY() return Y;public void setY(int y) Y = y;public
11、 boolean isFlag() return flag;public void setFlag(boolean flag) this.flag = flag;package com.stj.views;import java.awt.*;import javax.swing.ImageIcon;public class Bumb implements Runnableprivate WarShip ship;private int beginX;private int beginY;private int width = 5;private int height = 15;public b
12、oolean flag = false;private MyPanel panel;private Image image;public Bumb(MyPanel p,WarShip ship)this.beginX= ship.getBeginX()+20;this.beginY = ship.getBeginY()+20;this.panel = p;this.ship = ship;image = Toolkit.getDefaultToolkit().getImage(imgs/炸弹.png);image = new ImageIcon(image).getImage();this.width = image.getWidth(panel);this.height = image.getHeight(panel);/System.out.println(bumb width:+this.width);/System.out.println(bumb height:+this.height);public void run() while(!flag)this.moveDown();if(this.panel.isStop() = true)synchronized(MyPanel.subLock)tryMyPanel.subLock.wait();catch