收藏 分享(赏)

Java综合实验设计.doc

上传人:精品资料 文档编号:10615559 上传时间:2019-12-07 格式:DOC 页数:19 大小:156.50KB
下载 相关 举报
Java综合实验设计.doc_第1页
第1页 / 共19页
Java综合实验设计.doc_第2页
第2页 / 共19页
Java综合实验设计.doc_第3页
第3页 / 共19页
Java综合实验设计.doc_第4页
第4页 / 共19页
Java综合实验设计.doc_第5页
第5页 / 共19页
点击查看更多>>
资源描述

1、 WORD 格式可编辑专业知识分享综合实验报告:滑板反射小球游戏专业班级: 遥感科学与技术 学号: 20133350 姓名: 易乐安 日期: 2015 年 6月 30日 WORD 格式可编辑专业知识分享一、程序设计报告小球在窗口四壁弹射(虚线表示弹射的轨道)。左右移动滑板,接住小球弹射,如果没有接住,则游戏失败一次。要求:1. 自拟设计记分方法,和界面的其它部分;2. 滑板用键盘控制左右移动;3. 设置难度调节开关,允许游戏过程中改变这一设置,以调节小球运行速度,速度快,则难度增加。4. 小球在滑板上弹射时,允许一定量的随机变化弹射角度,以实现一定的不确定性。WORD 格式可编辑专业知识分享使

2、用模块:对系统包结构、文件结构列表说明,如表 2-1、2-2 所示。表 2-1包名 作用Java.awt.Insets 包含用于创建用户界面和绘制图形图像的所有类Java.awt.event.ActionEvent 定义了动作的类Java.awt.event.ActionListener 包含用于创建用户界面和绘制图形图像的所有的类Java.awt.event.MouseEvent 把类全部导进来Javax.swing.JOptionPane 有助于方便地弹出要求用户提供或向其发出通知表 2-2文件名 作用GameUI.java 程序的主窗体,负责窗口和菜单的绘制以及线程的调用。MyThrea

3、d.Java 游戏的线程,主要负责小球的绘制和判断小球是否被接住,以及记录更新分数。MyListener.java 监听鼠标位置移动的监听器。用来捕获鼠标的移动和鼠标的当前位置,同时这个类负责板子的绘制与更新。定义界面:设置标题设置大小设置关闭是退出程序 设置打开窗体时在屏幕中间显示设置窗体的流式布局管理器设置窗体背景颜色创建文本标签对象设置文本标签前景颜色创建进度条对象创建按钮对象 创建菜单条对象 创建菜单对象 WORD 格式可编辑专业知识分享创建菜单选项对象 创建单选选项创建一个按钮组 主要算法描述:MyThread继承于 Thread,使用一个单独的线程进行小球的绘制。小球的绘制和滑板的

4、绘制大同小异,都是使用 java.awt.Graphics进行绘制的。MyThread 还兼顾着进行小球是否被接住的判断。主要是通过返回的板子的坐标和小球的坐标来判断小球是否在板子上方的一定范围里,如果在,则判断为接住,否则,为掉落分层结构及调用关系说明进入游戏画面根据球出现的位置,移动鼠标使滑板到相应的位置的上方,测试可以接多少个球。若滑板接到一个球,则玩家就得一分,若接不到球,就游戏结束。先选择游戏的难度,有简单,中等和困难。游戏结束,选择否,退出游戏。游戏结束,选择是,重新开始新的游戏。WORD 格式可编辑专业知识分享2、程序测试报告用例:关键代码分析public void run()

5、drawOval();public void drawOval() UI.text_field.setText(count + “分“);/start = System.currentTimeMillis();while (isFinish) while (isPause) synchronized(this.g)g.setColor(java.awt.Color.black);g.fillOval(x, y, width, height);y += y1;getColors();g.setColor(color);g.fillOval(x, y, width, height);int x2

6、= listener.getX();if (y 595 stopThread();try WORD 格式可编辑专业知识分享Thread.sleep(speed); catch (Exception ef) ef.printStackTrace();小球的绘制其实就是不断的绘制一个圆形,只不过圆形的 y坐标在不停的变化。难度的控制是通过主程序传入的 speed参数来控制的,这个参数用于 Thread.sleep(speed),很显然,当这个参数与小球下落的速度成反比。通过调用 UI.text_field.setText()来更新主窗口上的分数。结果:WORD 格式可编辑专业知识分享结论:一个好的

7、算法可以让你的程序更健壮,编写的代码量更少,处理异常一直是 JAVA里的常事,通过试验,让我对基础的知识更加深入了解,也对更改代码错误有了一定的提升,能看的懂错误的代码错在哪里,并进行修改,使其正确。这个游戏只是一个简单的接球游戏,如果可以做的更好,就会更好的训练人们的集中力和反应速度,敏捷的做出正确的判断。WORD 格式可编辑专业知识分享附录:源程序代码:import java.awt.Insets; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; /游戏界面类/ public class Ga

8、meUI extends javax.swing.JFrame private static GameUI UI; private java.awt.Graphics g; private MyListener ml; public javax.swing.JLabel text_field; public javax.swing.JProgressBar pBar; private String command; public java.util.ArrayList list = new java.util.ArrayList(); private javax.swing.JToggleBu

9、tton button; public static void main(String args) UI = new GameUI(); UI.initUI(); / 初始化窗体的方法/ public void initUI() / 设置标题 this.setTitle(“接球“); / 设置大小 this.setSize(610, 635); / 设置关闭是退出程序 this.setDefaultCloseOperation(3); / 设置打开窗体时在屏幕中间显示 this.setLocationRelativeTo(null); / 设置窗体的流式布局管理器 this.setLayout

10、(new java.awt.FlowLayout(); WORD 格式可编辑专业知识分享/ 设置窗体背景颜色 this.getContentPane().setBackground(java.awt.Color.black); / 创建文本标签对象 text_field = new javax.swing.JLabel(); javax.swing.JLabel lable = new javax.swing.JLabel(“时 间 :“); / 设置文本标签前景颜色 lable.setForeground(java.awt.Color.red); text_field.setForegrou

11、nd(java.awt.Color.red); / 创建进度条对象 pBar = new javax.swing.JProgressBar(0, 330); / 创建按钮对象 button = new javax.swing.JToggleButton(); button.setMargin(new Insets(0, 0, 0, 0); button.setIcon(new javax.swing.ImageIcon(“images/Pause.gif“); button.setActionCommand(“暂停“); / 通过匿名内部类来创建动作监听器 java.awt.event.Act

12、ionListener button_listener = new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) String com = e.getActionCommand(); if (com.equals(“暂停“) button.setMargin(new Insets(0, 0, 0, 0); button .setIcon(new javax.swing.ImageIcon( “images/start.gif“); button.setActionCommand(“继续“);

13、 for (int i = 0; i list; private float value = 320; private java.awt.Color color = java.awt.Color.blue; /重写构造器/ public MyThread(java.awt.Graphics g, MyListener listener, GameUI UI, int x, int y, int speed) this.g = g; this.UI = UI; this.x = x; this.y = y; this.speed = speed; this.listener = listener

14、; / (non-Javadoc)重写 run的方法/ public void run() drawOval(); /创建线程的方法/ public void drawOval() start = System.currentTimeMillis(); while (isFinish) while (isPause) synchronized(this.g) / 画一个圆 g.setColor(java.awt.Color.black); g.fillOval(x, y, width, height); x += x1; y += y1; WORD 格式可编辑专业知识分享getColors()

15、; g.setColor(color); g.fillOval(x, y, width, height); int x2 = listener.getX(); if (x 580) x1 = -12; if (x 595 stopThread(); try Thread.sleep(speed); value -= 0.1; catch (Exception ef) ef.printStackTrace(); / 将前一次画的清除掉 end = System.currentTimeMillis(); last_time = 100 - (end - start) / 1000; UI.text

16、_field.setText(last_time + “s“); UI.pBar.setValue(int) value); WORD 格式可编辑专业知识分享if (last_time = 0) list = UI.list; for (int j = 0; j list.size(); j+) / 停在线程,并且去掉最后一个圆 list.get(j).stopThread(); list.get(j).fadeOval(); stopThread(); showDialog(); /线程结束时消去最后一个圆的方法/ public void fadeOval() g.setColor(java

17、.awt.Color.black); g.fillOval(x, y, width, height); /重来对话框的处理方法/ public void isAgain() isexist = false; list = UI.list; System.out.println(list.size(); for (int j = 0; j list.size(); j+) / 停在线程,并且去掉最后一个圆 list.get(j).stopThread(); list.get(j).fadeOval(); Object options = “是“, “否“ ; String command = U

18、I.getCommand(); response = JOptionPane.showOptionDialog(null, “坚持就是胜利,是否再来一次?“, null, JOptionPane.YES_OPTION, JOptionPane.NO_OPTION, null, options, null); System.out.println(response); if (response = 0) WORD 格式可编辑专业知识分享if (command.equals(“简单“) | command.equals(“开始“) AgainThread(); if (list.size() !=

19、 0) / 现将原来的对象从队列中移除 list.removeAll(list); UI.creatBall(20, 1); if (command.equals(“中等“) AgainThread(); if (list.size() != 0) list.removeAll(list); UI.creatBall(50, 2); if (command.equals(“困难“) AgainThread(); if (list.size() != 0) list.removeAll(list); UI.creatBall(40, 2); / 如果点击关闭,则将线程对象从队列中移除 if (r

20、esponse = -1 | response = 1) list.removeAll(list); /停止线程的方法/ public void stopThread() isFinish = false; isPause = false; /暂停线程的方法/ WORD 格式可编辑专业知识分享public void PauseThread() isPause = false; /继续线程的方法/ public void ContinueThread() isPause = true; /是否重来的方法/ public void AgainThread() isFinish = true; is

21、Pause = true; public void getColors() if (x % 2 = 0 if (x % 2 = 0 if (x % 2 != 0 if (x % 2 != 0 public void showDialog() javax.swing.JOptionPane .showInputDialog(“好样的,你是真的高手,n 恭喜你n 请输入您的大名“); WORD 格式可编辑专业知识分享import java.awt.event.KeyEvent; import java.awt.event.MouseEvent; import javax.swing.JFrame;

22、 /鼠标监听器的类/ public class MyListener extends java.awt.event.MouseAdapter private java.awt.Graphics g; private int x = 5, y = 620; private int width = 100, height = 10; public MyListener(java.awt.Graphics g) this.g = g; public void mouseMoved(MouseEvent e) / 设置画布对象颜色 synchronized (this.g) g.setColor(java.awt.Color.black); g.fillRect(x, y, width, height); x = e.getX(); g.setColor(java.awt.Color.green); g.fillRect(x, y, width, height); /得到 x的方法/ public int getX() return x;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报