基于Java的动物换位游戏软件设计课程设计Word文档下载推荐.docx
- 文档编号:18128274
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:52
- 大小:588.33KB
基于Java的动物换位游戏软件设计课程设计Word文档下载推荐.docx
《基于Java的动物换位游戏软件设计课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于Java的动物换位游戏软件设计课程设计Word文档下载推荐.docx(52页珍藏版)》请在冰豆网上搜索。
布置课程设计任务,查阅资料,分组设计,程序调试。
第19周:
程序调试,编写课程设计报告,验收,答辩。
指导教师:
2013年6月20日
专业负责人:
学院教学副院长:
成绩评定表
评
语
组长签字:
成绩
日期
2013年月日
1课设软件主要功能1
2类总体设计2
2.1类组合关系图2
2.2主类2
2.3其他类2
3类详细设计3
3.1CHANGEANIMALWINDOW类3
3.2ANIMAL类5
3.3POINT类7
3.4STONE类8
3.5HANDLEMOUSE类9
3.6AUTOMOVEANIMAL类10
4关键类成员函数流程图及代码13
5软件运行结果35
结论37
参考文献37
动物换位系统的设计
1课设软件主要功能
程序分为不同的级别,左右各有动物,中间石头没有动物,将左右动物交换,不可后退。
用鼠标单击一个动物,如果该动物前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有动物,但隔位上的石头没有动物,该动物就越过自己前面的动物跃到石头上,其他情形时,该动物不能跳跃。
不能持续玩的可以点自动演示,将自动完成游戏,可以帮助游戏者更好的了解系统的主体功能。
设计GUI界面的动物换位游戏,游戏的结果是让左右两组动物交换位置。
具体内容如下:
1)程序分为4个级别,用户可以通过界面上提供的菜单选择“初级”、“中级”、“高级”、“自定义”这4个级别。
对于“高级”级别,在水平排列的11块石头上的左右各有5个类型相同的动物,中间的石头上没有动物;
对于“自定义”级别,用户可以输入自己想设置的一个动物数量(输入的数必须是偶数),在水平排列的N块石头上的左右各有(N-1)/2个类型相同的动物,中间的石头上没有动物。
2)用鼠标单击一个的动物,如果该动物前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有动物,但隔位上的石头没有动物,该动物就越过自己前面的动物跃到石头上,其他情形时,该动物不能跳跃(跳跃时不能超过2块石头)。
3)左面的动物只能向右方跳跃,右面的动物只能向左方跳跃。
4)用户可以通过单击界面上提供的按钮,让程序自动完成动物换位。
5)可以随时单击界面上提供的按钮,重新开始当前的级别。
6)用户可以通过菜单选项,可以选择左、右动物的图像。
2类总体设计
2.1类组合关系图
2.2主类
ChangeAnimalWindow.java(主类)
ChangeAnimalWindow类负责创建动物换位的主窗口,该类含有main方法,程序从该类开始执行。
2.3其他类
2.3.1Animal
Animal类是JPanel的一个子类,创建的对象是ChangeAnimalWindow类的重要成员之一,用来表示“动物”。
2.3.2Point
Point类负责创建确定位置的对象,使用Point对象,可以确定Animal以及Stone对象在窗体中的位置。
2.3.3Stone
Stone类是JButton的一个子类,创建的对象表示“石头”。
2.3.4HandleMouse
HandleMouse类所创建的对象负责处理鼠标事件。
2.3.5AutoMoveAnimal
AutoMoveAnimal类所创建的对象使用算法完成动物的自动换位。
3类详细设计
3.1ChangeAnimalWindow类
1.效果图
ChangeAnimalWindow创建的窗口效果如图所示:
图3-1-1动物换位的主窗口
2.UML图
ChangeAnimalWindow类是javax.swing包中的JFrame的一个子类,并实现了ActionListener接口,标明该类的主要成员变量和方法的UML图如图所示。
以下是UML图中有关数据和方法的详细说明。
图3-1-2ChangeAnimalWindow类的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创建的按钮对象,名字依次为
“重新开始”、“撤销”和“自动演示”。
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、defaultImage等菜单项和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.2Animal类
Animal创建的对象效果图如图所示:
图3-2-1动物的效果图
Animal类是javax.swing包中JPanel容器的一个子类,创建的对象是数组animal的单元中的对象。
Animal型数组animal是ChangeAnimalWindow窗口的重要成员之一。
标明Animal类的主要成员变量和方法以及和ChangeAnimalWindow类之间组合关系的UML图,如图所示。
图3-2-2Animal类的UML图
●point是Point型对象,用来确定Animal对象在窗口中的位置。
●isLeft是boolean型数据,用来确定Animal对象是否为“左”。
●tool是Toolkit对象,用来获得Image对象。
●leftImage和rightImage是File类型的对象,用来确定Animal对象上绘制的图像文件。
●Animal()是构造方法,负责完成Animal对象的初始化。
●Animal对象调用setLeftImage(File)方法可以设置leftImage文件对象。
●Animal对象调用setRightImage(File)方法可以设置rightImage文件对象。
●Animal对象调用setIsLeft(boolean)设置自己是否为“左”的动物,即设置isLeft属性的值。
●Animal对象调用getIsLeft()方法判断自己是否为“左”的动物,即返回isLeft属性的值。
●Animal对象调用setAtPoint(Point)方法设置自己所在的“点”,即设置属性point的对象引用。
●Animal对象调用getAtPoint()返回自己所在的“点”,即返回point对象的引用。
Animal对象调用paintComponent(Graphics)方法绘制图像,即绘制tool对象根据leftImage或rightImage文件所创建的Image对象。
3.3Point类
Point创建的对象,负责刻画Animal对象和Stone对象所在的位置,无可显示的效果图。
Point创建的对象含有两个重要int型数据,分别用来表示窗体坐标系中的x轴坐标和y轴坐标值,窗体坐标系的原点是窗体的左上角,向右是x轴的正向,向下是y轴的正向。
Point类创建的对象是数组point的单元中的对象。
Point型数组point是ChangeAnimalWindow窗口的重要成员之一,其单元中的Point对象用来确定Animal对象和Stone对象在窗体中的位置。
标明Point类的主要成员变量和方法以及和ChangeAnimalWindow类之间的组合关系的UML图,如图所示。
图3-3-2Point类的UML图
1)成员变量
●x和y是Point对象中的两个int型数据,分别用来表示窗体坐标系中的x轴和y轴坐标值。
●haveAnimal是boolean数据,如果有Animal对象在该Point对象上时,该数据为true;
否则为false。
●animal是Animal类声明的对象,用来存放一个Animal对象的引用,标明该Animal对象在当前Point对象上。
2)方法
●Point(intx,inty)是构造方法,用来创建Point对象。
●Point对象调用isHaveAnimal()方法可以返回一个boolean数据,如果当前Point对象上有Animal对象,isHaveDisc()方法返回true;
否则返回false。
●Point对象调用setIsHaveAnimal(booleanboo)方法可以根据参数boo的值设置当前Point对象上是否有Animal对象。
●Point对象getX()和getY()方法可以返回其中的x轴坐标和y轴坐标。
●Point对象调用equals(TowerPointp)方法可以判断当前Point对象是否和参数p指定的Point对象相同。
●Point对象调用setThisAnimal(Animalanimal)方法,指定参数animal在当前Point对象上。
●Point对象调用getThisAnimal()方法可以返回当前Point对象上的Animal对象。
●Point对象调用setThisStone(Stonestone)方法,指定参数stone在当前Point对象上。
●Point对象调用getThisStone()方法可以返回当前Point对象上的Stone对象。
3.4Stone类
Stone创建的对象效果如图所示:
图3-4-1Stone类的效果图
Stone类是javax.swing包中JButton按钮组件的一个子类,创建的对象是数组stone的单元中的对象。
Stone型数组stone是ChangeAnimalWindow窗口的重要成员之一。
标明Stone类主要成员变量和方法以及和ChangeAnimalWindow类之间的组合关系的UML图,如图所示:
图3-4-2Stone类的UML图
iconStone用来确定Stone对象上的图标。
Stone()是构造方法,用来创建Stone对象。
3.5HandleMouse类
HandleMouse创建的对象效果如图所示:
图3-5-1HandleMouse创建的对象
HandleMouse类是javax.swing包中JPanel容器的一个子类,同时实现了MouseListener和ActionListener接口,创建的对象handleMouse是ChangeAnimalWindow类的成员之一,负责监视animal数组中的Animal对象上的鼠标事件。
当用户用鼠标单击Animal对象时,handleMouse对象负责给出移动Animal对象的有关算法。
标明HandleMouse类的主要成员变量、方法以及和ChangeAnimalWindow类之间组合关系的UML图,如图所示。
图3-5-2HandleMouse类的UML图
●point是Point型数组,用来存放ChangeAnimalWindow窗体中point数组的引用。
●step是ArrayList<
Integer>
数组表,用来存放移动“动物”的步骤。
●spendTime用来记录用户移动“动物”所用时间。
●recordTime是计时器。
●success是boolean型数据,当该变量的值为true时表示用户成功地将左右动物换位。
●countTime是boolean型数据,当该变量的值为true时,将启动计时器为用户计时;
否则不为用户计时。
●showTime是JTextField创建的文本框,负责显示用时。
●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(inta,Objectb)创建了计时器:
recordTime,其中的参数a的单位是毫秒,确定计时器每隔a毫秒“振铃”一次,参数b是计时器的监视器。
在这里取a=1000,监视器b是当前handleMouse对象。
计时器发生的振铃事件是ActionEvent事件,当振铃事件发生时,监视器就会监视到这个事件,监视器就会调用actionPerformed(ActionEvent)方法。
当振铃每隔1000毫秒发生一次时,方法actionPerformed(ActionEvent)就被执行一次,所执行的操作就是按着step指定的步骤移动一个Animal对象。
3.6AutoMoveAnimal类
AutoMoveAnimal类创建的对话框的效果如图1所示。
单价对话框上的“演示”按钮,ChangeAnimalWindow窗体将演示左右动物换位的步骤,如图2所示。
步骤间隔时间是1秒,单击“暂停”按钮暂停演示,单击“继续”按钮恢复演示。
图3-6-1演示动物换位图3-6-2按着算法进行换位
AutoMoveAnimal类是javax.swing包中JDialog的子类,并实现了ActionListener接口,创建的对象autoMoveAnimal是ChangeAnimalWindow的成员之一。
标明AutoMoveAnimal类的主要成员变量、方法以及和ChangeAnimalWindow类之间的组合关系的UML图,如图所示。
图3-6-3AutoMoveAnimal类的UML图
型对象,用来存放移动“动物”的步骤。
●bStart,bStop,bContinue,bClose是JButton按钮,当用户单击bStart按钮时,程序将按着step中的步骤开始移动动物;
单击按钮bStop时,暂停移动动物;
单击bContinue按钮时,恢复移动动物;
单击bClose按钮时,关闭当前对话框,并停止移动动物。
●time是javax.swing包中Timer类创建的计时器。
Timer(inta,Objectb)创建一个计时器,其中的参数a的单位是毫秒,确定计时器每隔a毫秒“振铃”一次,参数b是计时器的监视器,在这里我们取a=1000,监视器b是当前对话框。
计时器发生的振铃事件是ActionEvent类型事件,当振铃事件发生时,监视器就会监视到这个事件,监视器就回调ActionListener接口中的actionPerformed方法。
当振铃每隔1000毫秒发生一次时,方法actionPerformed就被执行一次,并按着step指定的步骤移动一个动物。
●AutoMoveAnimal()是构造方法,用来创建对象autoMoveAnimal。
●autoMoveAnimal对象调用setPoint(Point[])方法将ChangeAnimalWindow窗体中point数组的引用传递给对象,以便autoMoveAnimal对象移动ChangeAnimalWindow窗体中的动物。
●actionPerformed(ActionEvent)是接口ActionListener中的方法。
当用户单击bStart、bStop、bContinue或bClose当中任何一个按钮时,autoMoveDisc对象将调用执行actionPerformed(ActionEvent)方法,该方法的操作是,如果用户单击了bStart按钮
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Java 动物 换位 游戏软件 设计 课程设计