java综合实验设计
《java综合实验设计》由会员分享,可在线阅读,更多相关《java综合实验设计(14页珍藏版)》请在装配图网上搜索。
1、. -综合实验报告:滑板反射小球游戏专业班级: 遥感科学与技术 *: 20213350 : 易乐安 日期: 2021 年6月30日 . 优选-. -一、程序设计报告小球在窗口四壁弹射虚线表示弹射的轨道。左右移动滑板,接住小球弹射,如果没有接住,则游戏失败一次。要求:1. 自拟设计记分方法,和界面的其它局部;2. 滑板用键盘控制左右移动;3. 设置难度调节开关,允许游戏过程中改变这一设置,以调节小球运行速度,速度快,则难度增加。4. 小球在滑板上弹射时,允许一定量的随机变化弹射角度,以实现一定的不确定性。使用模块:对系统包构造、文件构造列表说明,如表2-1、2-2所示。表2-1包名作用J包含用于
2、创立用户界面和绘制图形图像的所有类J定义了动作的类J包含用于创立用户界面和绘制图形图像的所有的类J把类全部导进来J有助于方便地弹出要求用户提供或向其发出通知表2-2文件名作用GameUI.java程序的主窗体,负责窗口和菜单的绘制以及线程的调用。MyThread.Java游戏的线程,主要负责小球的绘制和判断小球是否被接住,以及记录更新分数。MyListener.java监听鼠标位置移动的监听器。用来捕获鼠标的移动和鼠标的当前位置,同时这个类负责板子的绘制与更新。定义界面:设置标题设置大小设置关闭是退出程序 设置翻开窗体时在屏幕中间显示设置窗体的流式布局管理器设置窗体背景颜色创立文本标签对象设置
3、文本标签前景颜色创立进度条对象创立按钮对象 创立菜单条对象 创立菜单对象 创立菜单项选择项对象 创立单项选择选项创立一个按钮组 主要算法描述:MyThread继承于Thread,使用一个单独的线程进展小球的绘制。小球的绘制和滑板的绘制小异,都是使用j进展绘制的。MyThread还兼顾着进展小球是否被接住的判断。主要是通过返回的板子的坐标和小球的坐标来判断小球是否在板子上方的一定围里,如果在,则判断为接住,否则,为掉落进入游戏画面根据球出现的位置,移动鼠标使滑板到相应的位置的上方,测试可以接多少个球。假设滑板接到一个球,则玩家就得一分,假设接不到球,就游戏完毕。先选择游戏的难度,有简单,中等和困
4、难。游戏完毕,选择否,退出游戏。游戏完毕,选择是,重新开场新的游戏。分层构造及调用关系说明二、 程序测试报告用例:关键代码分析publicvoid run() drawOval();publicvoid drawOval() /start = System.currentTimeMillis();while (isFinish) while (isPause) synchronized(this.g)black);g.fillOval(*, y, width, height);y += y1;getColors();g.setColor(color);g.fillOval(*, y, widt
5、h, height);int *2 = listener.get*();if (y 595 & * *2 & * 630) if (ise*ist) isAgain();stopThread();try Thread.sleep(speed); catch (E*ception ef) ef.printStackTrace();小球的绘制其实就是不断的绘制一个圆形,只不过圆形的y坐标在不停的变化。难度的控制是通过主程序传入的speed参数来控制的,这个参数用于Thread.sleep(speed)结果:结论:一个好的算法可以让你的程序更强健,编写的代码量更少,处理异常一直是JAVA里的常事,通
6、过试验,让我对根底的知识更加深入了解,也对更改代码错误有了一定的提升,能看的懂错误的代码错在哪里,并进展修改,使其正确。这个游戏只是一个简单的接球游戏,如果可以做的更好,就会更好的训练人们的集中力和反响速度,敏捷的做出正确的判断。附录:源程序代码:/游戏界面类/ private static GameUI UI; private MyListener ml; private String mand; public static void main(String args) UI = new GameUI(); UI.initUI(); / 初始化窗体的方法/ public void initU
7、I() / 设置标题 this.setTitle(接球); / 设置大小 this.setSize(610, 635); / 设置关闭是退出程序 this.setDefaultCloseOperation(3); / 设置翻开窗体时在屏幕中间显示 this.setLocationRelativeTo(null); / 设置窗体的流式布局管理器 / 设置窗体背景颜色 / 创立文本标签对象 / 设置文本标签前景颜色 / 创立进度条对象 / 创立按钮对象 button.setMargin(new Insets(0, 0, 0, 0); button.setActionmand(暂停); / 通过匿名
8、部类来创立动作监听器 public void actionPerformed(ActionEvent e) String = e.getActionmand(); if (.equals(暂停) button.setMargin(new Insets(0, 0, 0, 0); button images/start.gif); button.setActionmand(继续); for (int i = 0; i list.size(); i+) list.get(i).PauseThread(); if (.equals(继续) button.setMargin(new Insets(0,
9、0, 0, 0); button images/Pause.gif); button.setActionmand(暂停); for (int i = 0; i list.size(); i+) list.get(i).ContinueThread(); ; button.addActionListener(button_listener); this.add(button); this.add(lable); this.add(pBar); this.add(te*t_field); / 的到菜单条 / 为窗体设置菜单条 this.setJMenuBar(bar); / 设置窗体的可见性 th
10、is.setVisible(true); /创立菜单条的方法/ / 创立菜单条对象 / 创立菜单对象 / 创立菜单项选择项对象 / 创立单项选择选项 简单); 中等); 困难); / 创立一个按钮组 / 将单项选择按钮添加到按钮组中 group.add(easy_item); group.add(middle_item); group.add(hard_item); / 将单项选择按钮添加到菜单中 difficulty_menu.add(easy_item); difficulty_menu.add(middle_item); difficulty_menu.add(hard_item); /
11、 通过匿名部类来创立动作监听器 public void actionPerformed(ActionEvent e) mand = e.getActionmand(); / 如果选择开场,则创立线程对象 if (mand.equals(开场) & list.size() = 0) creatBall(20, 1); / 如果选择退出按钮,则退出程序 if (mand.equals(退出) System.e*it(0); / 如果选择简单按钮 if (mand.equals(简单) & list.size() = 0) creatBall(20, 1); / 如果选择中等按钮 if (mand.
12、equals(中等) & list.size() = 0) creatBall(50, 2); if (mand.equals(困难) & list.size() = 0) creatBall(40, 2); if (mand.equals(游戏说明) if (mand.equals(关于) 易乐安); ; / 添加动作监听器 star_item.addActionListener(listener); e*it_item.addActionListener(listener); easy_item.addActionListener(listener); middle_item.addAct
13、ionListener(listener); hard_item.addActionListener(listener); help_item.addActionListener(listener); about_item.addActionListener(listener); / 将菜单项选择项对象添加到菜单对象上 menu_menu.add(star_item); menu_menu.add(e*it_item); help_menu.add(help_item); help_menu.add(about_item); / 将菜单对象添加到菜单条上 bar.add(menu_menu);
14、 bar.add(difficulty_menu); bar.add(help_menu); / 返回菜单条对象 return bar; /创立线程对象的方法/ public void creatBall(int speed, int num) if (ml = null) g = UI.getGraphics(); ml = new MyListener(g); UI.addMouseListener(ml); UI.addMouseMotionListener(ml); for (int i = 0; i 580) *1 = -12; if (* 10) *1 = 12; if (y 59
15、5 & * *2 & * 630) if (ise*ist) isAgain(); stopThread(); try Thread.sleep(speed); value -= 0.1; catch (E*ception ef) ef.printStackTrace(); / 将前一次画的去除掉 end = System.currentTimeMillis(); last_time = 100 - (end - start) / 1000; if (last_time = 0) list = UI.list; for (int j = 0; j list.size(); j+) / 停在线程
16、,并且去掉最后一个圆 list.get(j).stopThread(); list.get(j).fadeOval(); stopThread(); showDialog(); /线程完毕时消去最后一个圆的方法/ public void fadeOval() g.fillOval(*, y, width, height); /重来对话框的处理方法/ public void isAgain() ise*ist = false; list = UI.list; for (int j = 0; j list.size(); j+) / 停在线程,并且去掉最后一个圆 list.get(j).stopT
17、hread(); list.get(j).fadeOval(); Object options = 是, 否 ; String mand = UI.getmand(); response = JOptionPane.showOptionDialog(null, 坚持就是胜利,是否再来一次., null, JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, null, options, null); if (response = 0) if (mand.equals(简单) | mand.equals(开场) AgainThread(); if (lis
18、t.size() != 0) / 现将原来的对象从队列中移除 list.removeAll(list); UI.creatBall(20, 1); if (mand.equals(中等) AgainThread(); if (list.size() != 0) list.removeAll(list); UI.creatBall(50, 2); if (mand.equals(困难) AgainThread(); if (list.size() != 0) list.removeAll(list); UI.creatBall(40, 2); / 如果点击关闭,则将线程对象从队列中移除 if (
19、response = -1 | response = 1) list.removeAll(list); /停顿线程的方法/ public void stopThread() isFinish = false; isPause = false; /暂停线程的方法/ public void PauseThread() isPause = false; /继续线程的方法/ public void ContinueThread() isPause = true; /是否重来的方法/ public void AgainThread() isFinish = true; isPause = true; p
20、ublic void getColors() if (* % 2 = 0 & y % 2 = 0) if (* % 2 = 0 & y % 2 != 0) if (* % 2 != 0 & y % 2 != 0) if (* % 2 != 0 & y % 2 != 0) public void showDialog() .showInputDialog(好样的,你是真的高手,n恭喜你n请输入您的大名); /鼠标监听器的类/ private int * = 5, y = 620; private int width = 100, height = 10; this.g = g; public void mouseMoved(MouseEvent e) / 设置画布对象颜色 synchronized (this.g) g.fillRect(*, y, width, height); * = e.get*(); g.fillRect(*, y, width, height); /得到*的方法/ public int get*() return *; 教育之通病是教用脑的人不用手,不教用手的人用脑,所以一无所能。教育革命的对策是手脑联盟,结果是手与脑的力量都可以大到不可思议。. 优选-
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 嵌入式系统概论-以S3C2440核心为架构课件
- 地理事象的季节变化课件
- 地理中外著名旅游景观欣赏课件
- 地理中图版选修5第一章第二节主要自然灾害及其分布课件
- 地理中考复习-地图课件
- 北师大版历史八年级下册第17课《筑起钢铁长城》课件1
- 北师大版历史八下《祖国统一的历史大潮》课件5
- 北师大版历史八下《欣欣向荣的科教文体事业》3课件
- 北师大版历史八下《蓝色的地中海文明》课件
- 北师大版历史九年级下册第10课“冷战”与“热战”丁飞鹤T-课件
- 北师大版历史八下第17课《大河流域的文明曙光》课件
- 北师大版历史九上1718课课件
- 高中化学热力学复习10多重平衡与化学计算ppt课件
- 高中化学第1章化学反应与能量转化第3节化学能转化为电能电池ppt课件1鲁科版选修
- 高中化学第三节玻璃、陶瓷和水泥公开课课件