基于Java的动物换位游戏软件设计课程设计.doc_第1页
基于Java的动物换位游戏软件设计课程设计.doc_第2页
基于Java的动物换位游戏软件设计课程设计.doc_第3页
基于Java的动物换位游戏软件设计课程设计.doc_第4页
基于Java的动物换位游戏软件设计课程设计.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

沈阳理工大学课程设计报告 课程设计任务书课程设计任务书 学 院信息学院专 业电子信息工程 学生姓名班级学号 课程设计题目 基于 Java 的动物换位游戏软件设计 实践教学要求与任务实践教学要求与任务 采用 java 技术设计动物换位游戏软件 设计要求如下 1 程序分为 3 个级别 用户可以通过界面上提供的菜单来选择 初级 中级 和 高级 这三个级别 对于 初级 级别 在水平排列的 7 块石头上的左右各有 3 个类型相同的 动物 中间的石头上没有动物 对于 中级 级别 在水平排列的 9 块石头上的左右各 有 4 个类型相同的动物 中间的石头上没有动物 对于 高级 级别 在水平排列的 11 块石头上的左右各有 5 个类型相同的动物 中间的石头上没有动物 2 用鼠标单击一个动物 如果该动物的前方的石头上没有动物 该动物就跳跃到该石头上 如果该动物前方的石头上有其他的动物 但隔位上的石头没有动物 该动物就越过自己 前面的动物跳跃到石头上 其他情形时 该动物不跳跃 跳跃时不能超过 2 块石头 3 左面的动物只能向右方跳跃 右面的动物只能向左方跳跃 4 用户可以通过单击界面上提供的按钮 让程序自动完成动物换位 5 可以随时单击界面上提供的按钮 重新开始当前的级别 6 用户通过菜单选项 可以选择左 右动物的图像 工作计划与进度安排工作计划与进度安排 第 18 周 布置课程设计任务 查阅资料 分组设计 程序调试 第 19 周 程序调试 编写课程设计报告 验收 答辩 指导教师 2013 年 6 月 20 日 专业负责人 2013 年 6 月 20 日 学院教学副院长 2013 年 6 月 20 日 沈阳理工大学课程设计报告 成绩评定表成绩评定表 学生姓名班级学号 专 业电子信息工 程 课程设计题目基于 Java 的动物换 位游戏软件设计 评 语 组长签字 成绩 日期 2013 年 月 日 沈阳理工大学课程设计报告 目目 录录 1 1 课设软件主要功能课设软件主要功能 1 2 2 类总体设计类总体设计 2 2 12 1 类组合关系图类组合关系图 2 2 22 2 主类主类 2 2 32 3 其他类其他类 2 3 3 类详细设计类详细设计 3 3 13 1 CHANGEANIMALWINDOWCHANGEANIMALWINDOW 类类 3 3 23 2 ANIMALANIMAL 类类 5 3 33 3 POINTPOINT 类类 7 3 43 4 STONESTONE 类类 8 3 53 5 HANDLEMOUSEHANDLEMOUSE 类类 9 3 63 6 AUTOMOVEANIMALAUTOMOVEANIMAL 类类 10 4 4 关键类成员函数流程图及代码关键类成员函数流程图及代码 13 5 5 软件运行结果软件运行结果 35 结论结论 37 参考文献参考文献 37 沈阳理工大学课程设计报告 1 动物换位系统的设计动物换位系统的设计 1 1 课设软件主要功能课设软件主要功能 程序分为不同的级别 左右各有动物 中间石头没有动物 将左右动物交换 不可后退 用鼠 标单击一个动物 如果该动物前方的石头上没有动物 该动物就跳跃到该石头上 如果该动物前方 的石头上有动物 但隔位上的石头没有动物 该动物就越过自己前面的动物跃到石头上 其他情形 时 该动物不能跳跃 不能持续玩的可以点自动演示 将自动完成游戏 可以帮助游戏者更好的了 解系统的主体功能 设计 GUI 界面的动物换位游戏 游戏的结果是让左右两组动物交换位置 具体内容如下 1 程序分为 4 个级别 用户可以通过界面上提供的菜单选择 初级 中级 高级 自定义 这 4 个级别 对于 初级 级别 在水平排列的 7 块石头上的左右各有 3 个类型相同的动物 中间的石头上没有动物 对于 中级 级别 在水平排列的 9 块石头上的左右各有 4 个类型相 同的动物 中间的石头上没有动物 对于 高级 级别 在水平排列的 11 块石头上的左右各 有 5 个类型相同的动物 中间的石头上没有动物 对于 自定义 级别 用户可以输入自己想 设置的一个动物数量 输入的数必须是偶数 在水平排列的 N 块石头上的左右各有 N 1 2 个类型相同的动物 中间的石头上没有动物 2 用鼠标单击一个的动物 如果该动物前方的石头上没有动物 该动物就跳跃到该石头上 如果 该动物前方的石头上有动物 但隔位上的石头没有动物 该动物就越过自己前面的动物跃到石 头上 其他情形时 该动物不能跳跃 跳跃时不能超过 2 块石头 3 左面的动物只能向右方跳跃 右面的动物只能向左方跳跃 4 用户可以通过单击界面上提供的按钮 让程序自动完成动物换位 5 可以随时单击界面上提供的按钮 重新开始当前的级别 6 用户可以通过菜单选项 可以选择左 右动物的图像 沈阳理工大学课程设计报告 2 2 2 类总体设计类总体设计 2 12 1 类组合关系图类组合关系图 2 22 2 主类主类 ChangeAnimalWindow java 主类 ChangeAnimalWindow 类负责创建动物换位的主窗口 该类含有 main 方法 程序从该类开始执 行 2 32 3 其他类其他类 2 3 12 3 1 AnimalAnimal Animal 类是 JPanel 的一个子类 创建的对象是 ChangeAnimalWindow 类的重要成员之一 用 来表示 动物 2 3 22 3 2 PointPoint Point 类负责创建确定位置的对象 使用 Point 对象 可以确定 Animal 以及 Stone 对象在窗 体中的位置 ChangeAnimalWindow Animal HandleMouse AutoMoveAnimal Jbutton JmenuIteem Customdlg File ShowRecordDialog Point Stone 沈阳理工大学课程设计报告 3 2 3 32 3 3 StoneStone Stone 类是 JButton 的一个子类 创建的对象表示 石头 2 3 42 3 4 HandleMouseHandleMouse HandleMouse 类所创建的对象负责处理鼠标事件 2 3 52 3 5 AutoMoveAnimalAutoMoveAnimal AutoMoveAnimal 类所创建的对象使用算法完成动物的自动换位 3 3 类详细设计类详细设计 3 13 1 ChangeAnimalWindowChangeAnimalWindow 类类 1 效果图 ChangeAnimalWindow 创建的窗口效果如图所示 图 3 1 1 动物换位的主窗口 2 UML 图 ChangeAnimalWindow 类是 javax swing 包中的 JFrame 的一个子类 并实现了 ActionListener 接口 标明该类的主要成员变量和方法的 UML 图如图所示 以下是 UML 图中有关数据和方法的详细说明 沈阳理工大学课程设计报告 4 图 3 1 2 ChangeAnimalWindow 类的 UML 图 3 以下是 UML 图中有关数据和方法的详细说明 1 成员变量 amoutOfAnimal 是 int 型数据 默认值是 6 amoutOfAnimal 的值用来确定 ChangeAnimalWindow 窗体中 动物 的数目 即 Animal 对象的数目 distance 是 int 型数据 默认值是 80 distance 的值用来确定 Point 对象之间的距离 进而 可以确定 Animal 之间 Stone 之间的距离以及 Animal 和 Stone 对象外观的大小 animal 是 Animal 型数组 其长度为 amoutOfAnimal point 是 Point 型数组 其长度为 amoutOfAnimal 1 stone 是 Stone 型数组 其长度为 amoutOfAnimal 1 handleMouse 是 HandleMouse 类创建的鼠标事件监视器 用来监视 animal 数组中 Animal 对象 触发的鼠标事件 autoMoveAnimal 是 AutoMoveAnimal 类创建的对话框 通过该对话框可以实现程序自动将左右 动物交换位置 bar 是 JMenuBar 创建的菜单条 用来添加菜单 bar 被放置在窗口的顶部 menuGrade 是 JMenu 创建的菜单 其名字为 选择级别 menuImage 也是 JMenu 创建的菜单 其名字为 选择动物图像 JPG GIF menuGrade 和 menuImage 被添加到菜单条 bar 中 oneGradeItem twoGradeItem threeGradeItem 是 JMenuItem 创建的菜单项 它们的名 字依次为 初级 中级 高级 这 3 个菜单项被添加到菜单项 menuGrade 中 leftImage rightImage 和 defaultImage 也是 JMenuItem 创建的菜单项 其名字依次为 左面 动物的图像 右面动物的图像 和 左右面动物的默认图像 这三个菜单项被添加到菜单 项 menuImage 中 renew quit 和 autoButton 是 JButton 创建的按钮对象 名字依次为 重新 沈阳理工大学课程设计报告 5 开始 撤销 和 自动演示 renew quit 和 autoButton 都将当前窗口注册为自己的 ActionEvent 事件监视器 2 方法 ChangeAnimalWindow 是构造方法 负责完成窗口的初始化 init 方法负责完成 Animal Stone 和 Point 对象的创建 setAmoutOfAnimal int 方法负责设置动物的个数 即 amountOfAnimal 的值 removeAnimalAndStone 方法负责从窗体中移掉动物和石头 即移掉 Animal 对象和 Stone 对象 needDoing 方法负责执行一些经常需要重复执行的代码 actionPerformed ActionEvent 方法是 ChangeAnimalWindow 类实现的 ActionListener 接口 中的方法 ChangeAnimalWindow 创建的窗口是 oneGradeItem twoGradeItem threeGradeItem custom leftImage rightImage default Image 等菜单项和 renew quit autoButton 按钮的 ActionEvent 事件监视器 当用户选中某 个菜单项或单击按钮时 窗口将执行 actionPerformed ActionEvent 方法进行相应的操作 如果用户选中 oneGradeItem twoGradeItem threeGradeItem 和 custom 四个菜单项的某一项 时 actionPerformed ActionEvent 方法所执行的操作就是改变 amountOfAnimal 的值 并 执行 needDoing 方法 完成必要的初始化 如果用户选中 leftImage 和 rightImage 菜单 项的某一个时 actionPerformed ActionEvent 方法所执行的操作就是改变 leftImageFile 和 rightImageFile 的引用 当用户单击 renew 按钮时 actionPerformed ActionEvent 方 法所进行的操作是保持当前的 amountOfAnimal 的值 并执行 needDoing 方法 完成必要 的初始化 当用户单击 quit 按钮时 actionPerformed ActionEvent 方法所进行的操作是 撤销当前 动物 的前一次跳跃 当用户单击 autoButton 按钮时 actionPerformed ActionEvent 方法所进行的操作是弹出 autoMoveAnimal 对话框 用户可 以通过该对话框让程序显示动物换位过程 main String 方法是程序运行的入口方法 3 23 2 AnimalAnimal 类类 1 效果图 Animal 创建的对象效果图如图所示 沈阳理工大学课程设计报告 6 图 3 2 1 动物的效果图 2 UML 图 Animal 类是 javax swing 包中 JPanel 容器的一个子类 创建的对象是数组 animal 的单元中 的对象 Animal 型数组 animal 是 ChangeAnimalWindow 窗口的重要成员之一 标明 Animal 类的主 要成员变量和方法以及和 ChangeAnimalWindow 类之间组合关系的 UML 图 如图所示 图 3 2 2 Animal 类的 UML 图 以下是 UML 图中有关数据和方法的详细说明 1 成员变量 point 是 Point 型对象 用来确定 Animal 对象在窗口中的位置 isLeft 是 boolean 型数据 用来确定 Animal 对象是否为 左 tool 是 Toolkit 对象 用来获得 Image 对象 leftImage 和 rightImage 是 File 类型的对象 用来确定 Animal 对象上绘制的图像文件 2 方法 Animal 是构造方法 负责完成 Animal 对象的初始化 Animal 对象调用 setLeftImage File 方法可以设置 leftImage 文件对象 Animal 对象调用 setRightImage File 方法可以设置 rightImage 文件对象 Animal 对象调用 setIsLeft boolean 设置自己是否为 左 的动物 即设置 isLeft 属性的 值 Animal 对象调用 getIsLeft 方法判断自己是否为 左 的动物 即返回 isLeft 属性的值 Animal 对象调用 setAtPoint Point 方法设置自己所在的 点 即设置属性 point 的对象 引用 沈阳理工大学课程设计报告 7 Animal 对象调用 getAtPoint 返回自己所在的 点 即返回 point 对象的引用 Animal 对象调用 paintComponent Graphics 方法绘制图像 即绘制 tool 对象根据 leftImage 或 rightImage 文件所创建的 Image 对象 3 33 3 PointPoint 类类 1 效果图 Point 创建的对象 负责刻画 Animal 对象和 Stone 对象所在的位置 无可显示的效果图 2 UML 图 Point 创建的对象含有两个重要 int 型数据 分别用来表示窗体坐标系中的 x 轴坐标和 y 轴坐 标值 窗体坐标系的原点是窗体的左上角 向右是 x 轴的正向 向下是 y 轴的正向 Point 类创建 的对象是数组 point 的单元中的对象 Point 型数组 point 是 ChangeAnimalWindow 窗口的重要成 员之一 其单元中的 Point 对象用来确定 Animal 对象和 Stone 对象在窗体中的位置 标明 Point 类的主要成员变量和方法以及和 ChangeAnimalWindow 类之间的组合关系的 UML 图 如图所示 图 3 3 2 Point 类的 UML 图 以下是 UML 图中有关数据和方法的详细说明 1 成员变量 x 和 y 是 Point 对象中的两个 int 型数据 分别用来表示窗体坐标系中的 x 轴和 y 轴坐标值 haveAnimal 是 boolean 数据 如果有 Animal 对象在该 Point 对象上时 该数据为 true 否则 为 false animal 是 Animal 类声明的对象 用来存放一个 Animal 对象的引用 标明该 Animal 对象在当 前 Point 对象上 2 方法 沈阳理工大学课程设计报告 8 Point int x int y 是构造方法 用来创建 Point 对象 Point 对象调用 isHaveAnimal 方法可以返回一个 boolean 数据 如果当前 Point 对象上有 Animal 对象 isHaveDisc 方法返回 true 否则返回 false Point 对象调用 setIsHaveAnimal boolean boo 方法可以根据参数 boo 的值设置当前 Point 对象上是否有 Animal 对象 Point 对象 getX 和 getY 方法可以返回其中的 x 轴坐标和 y 轴坐标 Point 对象调用 equals TowerPoint p 方法可以判断当前 Point 对象是否和参数 p 指定的 Point 对象相同 Point 对象调用 setThisAnimal Animal animal 方法 指定参数 animal 在当前 Point 对象 上 Point 对象调用 getThisAnimal 方法可以返回当前 Point 对象上的 Animal 对象 Point 对象调用 setThisStone Stone stone 方法 指定参数 stone 在当前 Point 对象上 Point 对象调用 getThisStone 方法可以返回当前 Point 对象上的 Stone 对象 3 43 4 StoneStone 类类 1 效果图 Stone 创建的对象效果如图所示 图 3 4 1 Stone 类的效果图 2 UML 图 Stone 类是 javax swing 包中 JButton 按钮组件的一个子类 创建的对象是数组 stone 的单元 中的对象 Stone 型数组 stone 是 ChangeAnimalWindow 窗口的重要成员之一 标明 Stone 类主要 成员变量和方法以及和 ChangeAnimalWindow 类之间的组合关系的 UML 图 如图所示 图 3 4 2 Stone 类的 UML 图 以下是 UML 图中有关数据和方法的详细说明 1 成员变量 iconStone 用来确定 Stone 对象上的图标 沈阳理工大学课程设计报告 9 2 方法 Stone 是构造方法 用来创建 Stone 对象 3 53 5 HandleMouseHandleMouse 类类 1 效果图 HandleMouse 创建的对象效果如图所示 图 3 5 1 HandleMouse 创建的对象 2 UML 图 HandleMouse 类是 javax swing 包中 JPanel 容器的一个子类 同时实现了 MouseListener 和 ActionListener 接口 创建的对象 handleMouse 是 ChangeAnimalWindow 类的成员之一 负责监视 animal 数组中的 Animal 对象上的鼠标事件 当用户用鼠标单击 Animal 对象时 handleMouse 对象 负责给出移动 Animal 对象的有关算法 标明 HandleMouse 类的主要成员变量 方法以及和 ChangeAnimalWindow 类之间组合关系的 UML 图 如图所示 图 3 5 2HandleMouse 类的 UML 图 以下是 UML 图中有关数据和方法的详细说明 1 成员变量 沈阳理工大学课程设计报告 10 point 是 Point 型数组 用来存放 ChangeAnimalWindow 窗体中 point 数组的引用 step 是 ArrayList数组表 用来存放移动 动物 的步骤 spendTime 用来记录用户移动 动物 所用时间 recordTime 是计时器 success 是 boolean 型数据 当该变量的值为 true 时表示用户成功地将左右动物换位 countTime 是 boolean 型数据 当该变量的值为 true 时 将启动计时器为用户计时 否则不 为用户计时 showTime 是 JTextField 创建的文本框 负责显示用时 2 方法 HandleMouse 是构造方法 负责创建 HandleMouse 对象 handleMouse 对象调用 setPoint Point 方法将 ChangeAnimalWindow 窗体中的 point 对 象的引用传递给该对象中的 point 以便 handleMouse 移动窗体中的 Animal 对象 handleMouse 对象调用 initStep 方法清空 step 中的数据 handleMouse 对象调用 initSpendTime 将 spendTime 的值设置为 0 handleMouse 对象调用 setCountTime boolean 设置是否启动计时器 handleMouse 对象调用 getStep 返回 step 对象 mousePressed MouseEvent 是 HandleMouse 类实现的 MouseListener 接口中的方法 当用户 用在 ChangeAnimalWindow 窗体中的 Animal 对象上按下鼠标时 将触发 MouseEvent 鼠标事件 handleMouse 对象将调用执行 mousePressed MouseEvent 方法对事件作出处理 即根据规则 移动当前被鼠标单击的 Animal 对象 mouseReleased MouseEvent 方法是 HandleMouse 类实现的 MouseListener 接口中的方法 ChangeAnimalWindow 窗体中的 Animal 对象上释放鼠标时 将触发 MouseEvent 鼠标事件 handleMouse 对象将调用执行 mouseReleased MouseEvent 方法对事件作出处理 其主要操 作是判断用户是否已经成功地将左右动物换位 actionPerformed ActionEvent 是 HandleMouse 类实现的 ActionListener 接口中的方法 使用 Timer 类的构造方法 Timer int a Object b 创建了计时器 recordTime 其中的参 数 a 的单位是毫秒 确定计时器每隔 a 毫秒 振铃 一次 参数 b 是计时器的监视器 在这里 取 a 1000 监视器 b 是当前 handleMouse 对象 计时器发生的振铃事件是 ActionEvent 事件 当振铃事件发生时 监视器就会监视到这个事件 监视器就会调用 actionPerformed ActionEvent 方法 当振铃每隔 1000 毫秒发生一次时 方法 actionPerformed ActionEvent 就被执行一次 所执行的操作就是按着 step 指定的步骤移 动一个 Animal 对象 沈阳理工大学课程设计报告 11 3 63 6 AutoMoveAnimalAutoMoveAnimal 类类 1 效果图 AutoMoveAnimal 类创建的对话框的效果如图 1 所示 单价对话框上的 演示 按钮 ChangeAnimalWindow 窗体将演示左右动物换位的步骤 如图 2 所示 步骤间隔时间是 1 秒 单击 暂停 按钮暂停演示 单击 继续 按钮恢复演示 图 3 6 1 演示动物换位 图 3 6 2 按着算法进行换位 2 UML 图 AutoMoveAnimal 类是 javax swing 包中 JDialog 的子类 并实现了 ActionListener 接口 创 建的对象 autoMoveAnimal 是 ChangeAnimalWindow 的成员之一 标明 AutoMoveAnimal 类的主要成 员变量 方法以及和 ChangeAnimalWindow 类之间的组合关系的 UML 图 如图所示 图 3 6 3AutoMoveAnimal 类的 UML 图 以下是 UML 图中有关数据和方法的详细说明 1 成员变量 point 是 Point 型数组 用来存放 ChangeAnimalWindow 窗体中 point 数组的引用 step 是 ArrayList型对象 用来存放移动 动物 的步骤 bStart bStop bContinue bClose 是 JButton 按钮 当用户单击 bStart 按钮时 程序将按 着 step 中的步骤开始移动动物 单击按钮 bStop 时 暂停移动动物 单击 bContinue 按钮时 恢复移动动物 单击 bClose 按钮时 关闭当前对话框 并停止移动动物 time 是 javax swing 包中 Timer 类创建的计时器 使用 Timer 类的构造方法 Timer int 沈阳理工大学课程设计报告 12 a Object b 创建一个计时器 其中的参数 a 的单位是毫秒 确定计时器每隔 a 毫秒 振铃 一次 参数 b 是计时器的监视器 在这里我们取 a 1000 监视器 b 是当前对话框 计时器发生 的振铃事件是 ActionEvent 类型事件 当振铃事件发生时 监视器就会监视到这个事件 监视 器就回调 ActionListener 接口中的 actionPerformed 方法 当振铃每隔 1000 毫秒发生一次时 方法 actionPerformed 就被执行一次 并按着 step 指定的步骤移动一个动物 2 方法 AutoMoveAnimal 是构造方法 用来创建对象 autoMoveAnimal autoMoveAnimal 对象调用 setPoint Point 方法将 ChangeAnimalWindow 窗体中 point 数 组的引用传递给对象 以便 autoMoveAnimal 对象移动 ChangeAnimalWindow 窗体中的动物 actionPerformed ActionEvent 是接口 ActionListener 中的方法 当用户单击 bStart bStop bContinue 或 bClose 当中任何一个按钮时 autoMoveDisc 对象将调用执行 actionPerformed ActionEvent 方法 该方法的操作是 如果用户单击了 bStart 按钮 就 按着 moveStep 中的步骤开始移动盘子 如果单击了 bStop 按钮 就暂停移动盘子 如果单击 了 bContinue 按钮 就恢复移动盘子 如果单击了 bClose 按钮 就关闭当前对话框 并停止 移动盘子 autoMoveAnimal 对象调用 setStep 方法设置 step 对象中的数据 step 是 ArrayList 存放着移动 动物 的步骤 这些步骤是 setStep 用算法生成了整 数序列 例如 当 step 中存放的整数序列是 4 3 2 4 时 那么该序列表示了两个连续的移 动步骤 将 point 4 上的动物移动到 point 3 上 和 将 point 2 上的动物移动到 point 4 上 沈阳理工大学课程设计报告 13 4 4 关键类成员函数流程图及代码关键类成员函数流程图及代码 4 14 1 系统流程图系统流程图 开始 进入游戏界面 是否选择级别 进入所选级别等 级 是否选择动物图 像 进入选择动 物图像界面 游戏开始 是否相邻两个 图片相同 游戏终 止 自动演示游戏结 果 是否要 重新开 始 是否要自 动演示 是否达到英 雄榜记录 撤销游 戏 输入游戏者信 息 是否游戏成 功 继续游 戏 游戏结束 是 否 是 否 是否 否 否 否 是 是 是 是 否 沈阳理工大学课程设计报告 14 图 4 1 系统总体流程图 4 24 2 源程序源程序代码代码 1 ChangeAnimalWindow java1 ChangeAnimalWindow java import javax swing import java awt import java awt event import java util ArrayList import java io import javax swing filechooser public class ChangeAnimalWindow extends JFrame implements ActionListener int amountOfAnimal 6 int distance 80 Animal animal Point point Stone stone HandleMouse handleMouse AutoMoveAnimal autoMoveAnimal File leftImageFile rightImageFile File fileOneGrade fileTwoGrade fileThreeGrade filecustomGrade JButton renew quit autoButton null JMenuBar bar JMenu menuGrade menuImage menuHelp menuHero JMenuItem oneGradeResult twoGradeResult threeGradeResult customGradeResult JMenuItem oneGradeItem twoGradeItem threeGradeItem limitTime JMenuItem custom JMenuItem helpcontent aboutUs JMenuItem leftIamge rightIamge defaultImage JPanel pCenter ShowRecordDialog showDiolag null ChangeAnimalWindow pCenter new JPanel pCenter setBackground Color pink pCenter setLayout null handleMouse new HandleMouse autoMoveAnimal new AutoMoveAnimal leftImageFile new File dog jpg rightImageFile new File cat jpg init bar new JMenuBar menuGrade new JMenu 选择级别 oneGradeItem new JMenuItem 初 级 twoGradeItem new JMenuItem 中 级 threeGradeItem new JMenuItem 高 级 沈阳理工大学课程设计报告 15 custom new JMenuItem 自定义 leftIamge new JMenuItem 左面动物的图像 rightIamge new JMenuItem 右面动物的图像 defaultImage new JMenuItem 左右面动物的默认图像 limitTime new JMenuItem 我超时了吗 menuGrade add oneGradeItem menuGrade add twoGradeItem menuGrade add threeGradeItem menuGrade add custom menuImage add leftIamge menuImage add rightIamge menuImage add defaultImage menuHero add oneGradeResult menuHero add twoGradeResult menuHero add threeGradeResult menuHero add customGradeResult menuHero add limitTime menuHelp add helpcontent menuHelp add aboutUs bar add menuGrade bar add menuImage bar add menuHero bar add menuHelp setJMenuBar bar oneGradeItem addActionListener this twoGradeItem addActionListener this threeGradeItem addActionListener this custom addActionListener this leftIamge addActionListener this rightIamge addActionListener this defaultImage addActionListener this oneGradeResult addActionListener this twoGradeResult addActionListener this threeGradeResult addActionListener this customGradeResult addActionListener this limitTime addActionListener this helpcontent addActionListener this aboutUs addActionListener this renew new JButton 重新开始 renew addActionListener this autoButton new JButton 自动演示 autoButton addActionListener this quit new JButton 撤消 quit addActionListener this JPanel north new JPanel north add renew north add quit north add autoButton String mess 互换左右动物位置 JLabel hintMess new JLabel mess JLabel CENTER north add hintMess 沈阳理工大学课程设计报告 16 add north BorderLayout NORTH add pCenter BorderLayout CENTER JPanel south new JPanel south add handleMouse add south BorderLayout SOUTH setVisible true setBounds 60 60 710 300 validate setDefaultCloseOperation JFrame EXIT ON CLOSE if fileOneGrade exists try fileOneGrade createNewFile catch IOException exp if fileTwoGrade exists try fileTwoGrade createNewFile catch IOException exp if fileThreeGrade exists try fileThreeGrade createNewFile catch IOException exp if filecustomGrade exists try filecustomGrade createNewFile catch IOException exp handleMouse gradeFile fileOneGrade showDiolag new ShowRecordDialog public void init animal new Animal amountOfAnimal point new Point amountOfAnimal 1 stone new Stone amountOfAnimal 1 int space distance for int i 0 i point length i point i new Point space 100 space space distance for int i 0 i animal length i animal i new Animal animal i addMouseListener handleMouse if ianimal length 2 animal i setIsLeft false else if i animal length 2 1 if animal i equals animal i animal i setIsLeft true else animal i setIsLeft false for int i 0 i stone length i stone i new Stone pCenter add stone i stone i setSize distance 8 9 18 int w stone i getBounds width int h stone i getBounds height stone i setLocation point i getX w 2 point i getY point i setThisStone stone i for int i 0 i animal length i animal i setSize distance 6 7 distance 3 4 int w animal i getBounds width int h animal i getBounds height pCenter add animal i if i 2 public void removeAnimalAndStone for int i 0 i point length i if point i getThisAnimal null pCenter remove point i getThisAnimal for int i 0 i stone length i if point i getThisStone null pCenter remove point i getThisStone pCenter validate pCenter repaint public void needDoing init handleMouse initStep handleMouse initSpendTime handleMouse setCountTime true autoMoveAnimal setPoint point public void actionPerformed ActionEvent e if e getSource oneGradeItem handleMouse gradeFile fileOneGrade distance 80 removeAnimalAndStone setAmountOfAnimal 6 needDoing else if e getSource twoGradeItem handleMouse gradeFile fileTwoGrade distance 70 removeAnimalAndStone setAmountOfAnimal 8 needDoing else if e getSource threeGradeItem 沈阳理工大学课程设计报告 19 handleMouse gradeFile fileThreeGrade distance 60 removeAnimalAndStone setAmountOfAnimal 10 needDoing else if e getSource custom handleMouse gradeFile filecustomGrade Customdlg dialog new Customdlg this 自定义 true dialog setVisible true amountOfAnimal dialog getAmountOfAnimal distance 560 amountOfAnimal removeAnimalAndStone setAmountOfAnimal amountOfAnimal needDoing else if e getSource helpcontent JOptionPane pane new JOptionPane String format 1 左右边的动物分别移动到另一边 2 左只能向右方跳 右只能向左跳 3 跳跃最多不能越过2块石头 JButton btnOk btnOk new JButton 确定 pane setOptions new JButton btnOk btnOk addActionListener new ActionListener public void actionPerformed ActionEvent e dlghelpList dispose dlghelpList setVisible true else if e getSource renew removeAnimalAndStone needDoing else if e getSource autoButton removeAnimalAndStone needDoing handleMouse setCountTime false autoMoveAnimal setStep int x this getBounds x this getBounds width 2 int y this getBounds y this getBounds height autoMoveAnimal setLocation x y 沈阳理工大学课程设计报告 20 autoMoveAnimal setSize this getBounds width 2 120 autoMoveAnimal setVisible true else if e getSource quit ArrayListstep handleMouse getStep int length step size int start 1 end 1 if length 2 end step get length 1 start step get length 2 step remove length 1 step remove length 2 Animal ani point end getThisAnimal int w ani getBounds width int h ani getBounds height ani setLocation point start getX w 2 point start getY h ani setAtPoint point start point start setThisAnimal ani point start setIsHaveAnimal true point end setIsHaveAnimal false else if e getSou

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论