基于Java的动物换位游戏软件课程设计报告文档格式.docx

上传人:b****7 文档编号:22481677 上传时间:2023-02-04 格式:DOCX 页数:60 大小:503.16KB
下载 相关 举报
基于Java的动物换位游戏软件课程设计报告文档格式.docx_第1页
第1页 / 共60页
基于Java的动物换位游戏软件课程设计报告文档格式.docx_第2页
第2页 / 共60页
基于Java的动物换位游戏软件课程设计报告文档格式.docx_第3页
第3页 / 共60页
基于Java的动物换位游戏软件课程设计报告文档格式.docx_第4页
第4页 / 共60页
基于Java的动物换位游戏软件课程设计报告文档格式.docx_第5页
第5页 / 共60页
点击查看更多>>
下载资源
资源描述

基于Java的动物换位游戏软件课程设计报告文档格式.docx

《基于Java的动物换位游戏软件课程设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《基于Java的动物换位游戏软件课程设计报告文档格式.docx(60页珍藏版)》请在冰豆网上搜索。

基于Java的动物换位游戏软件课程设计报告文档格式.docx

布置课程设计任务,查阅资料,分组设计,程序调试。

第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类是utton的一个子类,创建的对象表示“石头”。

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是utton创建的按钮对象,名字依次为“重新开始”、“撤销”和“自动演示”。

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包中utton按钮组件的一个子类,创建的对象是数组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是utton按钮,当用户单击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按钮,就按着moveStep中的步骤开始移动盘子;

如果单击了bStop

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1