基于Java的动物换位游戏软件设计课程设计
- 格式:doc
- 大小:3.59 MB
- 文档页数:40
课程设计任务书成绩评定表目录1 课设软件主要功能 (1)2 类总体设计 (2)2.1 类组合关系图 (2)2.2 主类 (2)2.3 其他类 (2)3 类详细设计 (3)3.1 CHANGEANIMALWINDOW类 (3)3.2 ANIMAL类 (5)3.3 POINT类 (7)3.4 STONE类 (8)3.5 HANDLEMOUSE类 (9)3.6 AUTOMOVEANIMAL类 (10)4 关键类成员函数流程图及代码 (13)5 软件运行结果 (35)结论 (37)参考文献 (37)动物换位系统的设计1 课设软件主要功能程序分为不同的级别,左右各有动物,中间石头没有动物,将左右动物交换,不可后退。
用鼠标单击一个动物,如果该动物前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有动物,但隔位上的石头没有动物,该动物就越过自己前面的动物跃到石头上,其他情形时,该动物不能跳跃。
不能持续玩的可以点自动演示,将自动完成游戏,可以帮助游戏者更好的了解系统的主体功能。
设计GUI界面的动物换位游戏,游戏的结果是让左右两组动物交换位置。
具体内容如下:1) 程序分为4个级别,用户可以通过界面上提供的菜单选择“初级”、“中级”、“高级”、“自定义”这4个级别。
对于“初级”级别,在水平排列的7块石头上的左右各有3个类型相同的动物,中间的石头上没有动物;对于“中级”级别,在水平排列的9块石头上的左右各有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.1 AnimalAnimal类是JPanel的一个子类,创建的对象是ChangeAnimalWindow类的重要成员之一,用来表示“动物”。
2.3.2 PointPoint类负责创建确定位置的对象,使用Point对象,可以确定Animal以及Stone对象在窗体中的位置。
2.3.3 StoneStone类是JButton的一个子类,创建的对象表示“石头”。
2.3.4 HandleMouseHandleMouse类所创建的对象负责处理鼠标事件。
2.3.5 AutoMoveAnimalAutoMoveAnimal类所创建的对象使用算法完成动物的自动换位。
3类详细设计3.1 ChangeAnimalWindow类1.效果图ChangeAnimalWindow创建的窗口效果如图所示:图3-1-1动物换位的主窗口2.UML图ChangeAnimalWindow类是javax.swing包中的JFrame的一个子类,并实现了ActionListener 接口,标明该类的主要成员变量和方法的UML图如图所示。
以下是UML图中有关数据和方法的详细说明。
图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创建的按钮对象,名字依次为“重新开始”、“撤销”和“自动演示”。
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.2 Animal类1.效果图Animal创建的对象效果图如图所示:图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的对象引用。
●Animal对象调用getAtPoint()返回自己所在的“点”,即返回point对象的引用。
Animal对象调用paintComponent(Graphics)方法绘制图像,即绘制tool对象根据leftImage 或rightImage文件所创建的Image对象。