已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java 程序设计综合实验报告 综合实验报告 滑板反射小球游戏 专业班级 遥感科学与技术 学号 20133350 姓名 易乐安 日期 2015 年 6 月 30 日 Java 程序设计综合实验报告 0 一 程序设计报告 小球在窗口四壁弹射 虚线表示弹射的轨道 左右移动滑板 接住小球弹射 如果没有接住 则游戏失败一次 要求 1 自拟设计记分方法 和界面的其它部分 2 滑板用键盘控制左右移动 3 设置难度调节开关 允许游戏过程中改变这一设置 以调节小 球运行速度 速度快 则难度增加 4 小球在滑板上弹射时 允许一定量的随机变化弹射角度 以实现 一定的不确定性 Java 程序设计综合实验报告 1 使用模块 对系统包结构 文件结构列表说明 如表 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程序的主窗体 负责窗口和菜单的绘制以及线程的调用 MyThread Java游戏的线程 主要负责小球的绘制和判断小球是否被接住 以及记 录更新分数 MyListener java监听鼠标位置移动的监听器 用来捕获鼠标的移动和鼠标的当前位 置 同时这个类负责板子的绘制与更新 定义界面 设置标题 设置大小设置 关闭是退出程序 设置打开窗体时在屏幕中间显示 设置窗体的流式布局管理器 设置窗体背景颜色 创建文本标签对象 设置文本标签前景颜色 创建进度条对象 创建按钮对象 创建菜单条对象 创建菜单对象 Java 程序设计综合实验报告 2 创建菜单选项对象 创建单选选项 创建一个按钮组 主要算法描述 MyThread 继承于 Thread 使用一个单独的线程进行小球的绘制 小球的绘制和滑板的 绘制大同小异 都是使用 java awt Graphics 进行绘制的 MyThread 还兼顾着进行小球是 否被接住的判断 主要是通过返回的板子的坐标和小球的坐标来判断小球是否在板子上方 的一定范围里 如果在 则判断为接住 否则 为掉落 分层结构及调用关系说明 进入游戏画面 根据球出现的位置 移动 鼠标使滑板到相应的位置 的上方 测试可以接多少 个球 若滑板接到一个球 则玩 家就得一分 若接不到球 就游戏结束 先选择游戏的难度 有简单 中等和困 难 游戏结束 选 择否 退出游 戏 游戏结束 选择是 重新开始新的游戏 Java 程序设计综合实验报告 3 2 程序测试报告 用例 关键代码分析 public void run 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 listener getX if y 595 stopThread try Java 程序设计综合实验报告 4 Thread sleep speed catch Exception ef ef printStackTrace 小球的绘制其实就是不断的绘制一个圆形 只不过圆形的 y 坐标在不停的变化 难度 的控制是通过主程序传入的 speed 参数来控制的 这个参数用于 Thread sleep speed 很显 然 当这个参数与小球下落的速度成反比 通过调用 UI text field setText 来更新主窗口上 的分数 结果 Java 程序设计综合实验报告 5 结论 一个好的算法可以让你的程序更健壮 编写的代码量更少 处理异常一直是 JAVA 里 的常事 通过试验 让我对基础的知识更加深入了解 也对更改代码错误有了一定的提升 能看的懂错误的代码错在哪里 并进行修改 使其正确 这个游戏只是一个简单的接球游 戏 如果可以做的更好 就会更好的训练人们的集中力和反应速度 敏捷的做出正确的判 断 Java 程序设计综合实验报告 6 附录 源程序代码 源程序代码 import java awt Insets import java awt event ActionEvent import java awt event ActionListener 游戏界面类 public class GameUI 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 JToggleButton 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 new java awt FlowLayout 设置窗体背景颜色 Java 程序设计综合实验报告 7 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 setForeground 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 ActionListener 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 继续 for int i 0 i list size i list get i PauseThread if com equals 继续 button setMargin new Insets 0 0 0 0 button setIcon new javax swing ImageIcon images Pause gif button setActionCommand 暂停 Java 程序设计综合实验报告 8 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 text field 的到菜单条 javax swing JMenuBar bar creatMenuBar 为窗体设置菜单条 this setJMenuBar bar 设置窗体的可见性 this setVisible true 创建菜单条的方法 public javax swing JMenuBar creatMenuBar 创建菜单条对象 javax swing JMenuBar bar new javax swing JMenuBar 创建菜单对象 javax swing JMenu menu menu new javax swing JMenu 菜单 javax swing JMenu difficulty menu new javax swing JMenu 难度 javax swing JMenu help menu new javax swing JMenu 帮助 创建菜单选项对象 javax swing JMenuItem star item new javax swing JMenuItem 开始 javax swing JMenuItem exit item new javax swing JMenuItem 退出 javax swing JMenuItem help item new javax swing JMenuItem 游戏说明 javax swing JMenuItem about item new javax swing JMenuItem 关于 创建单选选项 javax swing JRadioButtonMenuItem easy item new javax swing JRadioButtonMenuItem Java 程序设计综合实验报告 9 简单 javax swing JRadioButtonMenuItem middle item new javax swing JRadioButtonMenuItem 中等 javax swing JRadioButtonMenuItem hard item new javax swing JRadioButtonMenuItem 困难 创建一个按钮组 javax swing ButtonGroup group new javax swing ButtonGroup 将单选按钮添加到按钮组中 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 通过匿名内部类来创建动作监听器 ActionListener listener new java awt event ActionListener public void actionPerformed ActionEvent e command e getActionCommand 如果选择开始 则创建线程对象 if command equals 开始 如果选择退出按钮 则退出程序 if command equals 退出 System exit 0 如果选择简单按钮 if command equals 简单 如果选择中等按钮 if command equals 中等 if command equals 困难 if command equals 游戏说明 javax swing JOptionPane showMessageDialog null 用挡板接球 如果 接不住 就算输了 n 游戏可以选择难度 包括简单 中等 困难 if command equals 关于 javax swing JOptionPane showMessageDialog null 滑板反射小球游 戏 n 制作人 易乐安 添加动作监听器 star item addActionListener listener exit item addActionListener listener easy item addActionListener listener middle item addActionListener listener hard item addActionListener listener help item addActionListener listener about item addActionListener listener 将菜单选项对象添加到菜单对象上 menu menu add star item menu menu add exit item help menu add help item help menu add about item 将菜单对象添加到菜单条上 bar add menu menu bar add difficulty menu bar add help menu 返回菜单条对象 return bar Java 程序设计综合实验报告 11 创建线程对象的方法 public void creatBall int speed int num java util Random ran new java util Random if ml null g UI getGraphics ml new MyListener g UI addMouseListener ml UI addMouseMotionListener ml for int i 0 i num i int x ran nextInt 600 10 int y ran nextInt 300 100 MyThread th new MyThread g ml UI x y speed list add th th start 得到命令的方法 public String getCommand return command import java awt Color import javax swing JOptionPane 线程类 public class MyThread extends Thread private int width 20 height 20 private int x y private java awt Graphics g private GameUI UI private boolean isexist true private MyListener listener private int speed private int x1 12 y1 12 private long start end Java 程序设计综合实验报告 12 private long last time private int response private boolean isFinish true private boolean isPause true private java util ArrayList 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 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 getColors g setColor color Java 程序设计综合实验报告 13 g fillOval x y width height int x2 listener getX if x 580 x1 12 if x 10 x1 12 if y 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 field setText last time s UI pBar setValue int value if last time 0 list UI list for int j 0 j list size j Java 程序设计综合实验报告 14 停在线程 并且去掉最后一个圆 list get j stopThread list get j fadeOval stopThread showDialog 线程结束时消去最后一个圆的方法 public void fadeOval g setColor java 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 UI getCommand response JOptionPane showOptionDialog null 坚持就是胜利 是否再来一次 null JOptionPane YES OPTION JOptionPane NO OPTION null options null System out println response if response 0 if command equals 简单 command equals 开始 AgainThread if list size 0 Java 程序设计综合实验报告 15 现将原来的对象从队列中移除 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 如果点击关闭 则将线程对象从队列中移除 i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024上海市优惠价房购买合同文本
- 咖啡店桌椅订购与安装合同
- 2024年挖机施工协议合同
- 企业承包经营合同书范本
- 2024年购买二手车需谨慎
- 展会与媒体合作协议模板
- 产品制造分许可协议分析
- 个人与企业间借款合同范本
- 成都市白蚁防治工程合同书参考文献
- 广告媒介合同格式参考
- 【参考】华为腾讯职位管理0506
- 五年级英语上册Unit1Getupontime!教案陕旅版
- 风机安装工程质量通病及预防措施
- 三角形钢管悬挑斜撑脚手架计算书
- 文件和文件夹的基本操作教案
- 剪纸教学课件53489.ppt
- 旅游业与公共关系PPT课件
- 劳动法讲解PPT-定稿..完整版
- 彩色的翅膀_《彩色的翅膀》课堂实录
- 假如你爱我的正谱
- 铜芯聚氯乙烯绝缘聚氯乙烯护套控制电缆检测报告可修改
评论
0/150
提交评论