




已阅读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”时,那么该序列表示了两个连续的移 动步骤:“将 point4上的动物移动到 point3上”和“将 point2上的动物移动到 point4上” 。 沈阳理工大学课程设计报告 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 animalamountofanimal; point=new pointamountofanimal+1; stone=new stoneamountofanimal+1; int space=distance; for(int i=0;ianimal.length/2) animali.setisleft(false); /else if(i=animal.length/2+1) / /if(animali.equals(animali) /animali.setisleft(true); /else / animali.setisleft(false); / for(int i=0;i=2 public void removeanimalandstone() for(int i=0;istep=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=pointend.getthisanimal(); int w=ani.getbounds().width; int h=ani.getbounds().height; ani.setlocation(pointstart.getx()-w/2,pointstart.gety()-h); ani.setatpoint(pointstart); pointstart.setthisanimal(ani); pointstart.setishaveanimal(true); pointend.setishaveanimal(false); else if(e.getsource()=leftiamge) jfilechooser chooser=new jfilechooser(); filenameextensionfilter filter = new filenameextensionfilter( “jpg chooser.setfilefilter(filter); int state=chooser.showopendialog(null); file file=chooser.getselectedfile(); if(file!=null for(int i=0;i=(5*amountofanimal) joptionpane.showmessagedialog(this,“在“+(5*amountofanimal)+“s里你还没完 成!rn“+“你太慢了!好逊啊!“); leftimagefile=new file(“pigone.jpg“); rightimagefile=new file(“pigtwo.jpg“); for(int i=0;i step; int spendtime=0; javax.swing.timer recordtime; boolean success=false,counttime=false; jtextfield showtime; file musicfile; audioclip clip; file leftimagefile,rightimagefile,gradefile; animal animal; record record; handlemouse() try step=new arraylist(); recordtime=new javax.swing.timer(1000,this); record=new record(); musicfile =new file(“chimes.wav“); uri uri=musicfile.touri(); url url = uri.tourl(); showtime=new jtextfield(26); showtime.seteditable(false); showtime.sethorizontalalignment(jtextfield.center); showtime.setfont(new font(“楷体_gb2312“,font.bold,18); add(new jlabel(“负责处理鼠标事件,并显示您的用时:“,jlabel.center); add(showtime); setbackground(color.cyan); clip=applet.newaudioclip(url); 沈阳理工大学课程设计报告 26 catch(exception e) e.printstacktrace(); public void setpoint(point point) this.point=point; public void initstep() step.clear(); public void initspendtime() spendtime=0; showtime.settext(null); recordtime.stop(); public arraylist getstep() return step; public void setcounttime(bool
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 出租屋管理安全培训课件
- 文库发布:出师表课件
- 出国安全培训制度课件
- 2025年长期供货合同范本-涂料供应合同
- 出口许可证课件
- 冲积扇形成原因课件
- 2025全新升级计算机辅助卓越二手房买卖中介服务合同
- 2025农药买卖合同(除草剂)
- 2025上海市地方标准《融资租赁服务合同规范》编制说明
- 2025合同样本:健身房合作经营合同律师起草专业版
- 2023柔性棚洞防护结构技术规程
- 浙江工业大学学生综合测评分细则
- 英语初高中衔接音标
- 第十四章滚动轴承相关设计
- 第1章 数据与统计学-统计学
- GB/T 2059-2000铜及铜合金带材
- GB/T 14456.1-2017绿茶第1部分:基本要求
- 远离电子烟主题班会课件
- 设备维护保养手册
- ZYHZYHC系列自控远红外电焊条烘干炉使用说明书
- 外科学课件:泌尿、男生殖系统外科检查
评论
0/150
提交评论