基于Java的动物换位游戏软件设计.docx
《基于Java的动物换位游戏软件设计.docx》由会员分享,可在线阅读,更多相关《基于Java的动物换位游戏软件设计.docx(66页珍藏版)》请在冰点文库上搜索。
基于Java的动物换位游戏软件设计
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:
所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得及其它教育机构的学位或学历而使用过的材料。
对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作者签名:
日 期:
指导教师签名:
日 期:
使用授权说明
本人完全了解大学关于收集、保存、使用毕业设计(论文)的规定,即:
按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名:
日 期:
学位论文原创性声明
本人郑重声明:
所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。
除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。
对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
本人完全意识到本声明的法律后果由本人承担。
作者签名:
日期:
年月日
学位论文版权使用授权书
本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。
本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。
涉密论文按学校规定处理。
作者签名:
日期:
年月日
导师签名:
日期:
年月日
注意事项
1.设计(论文)的内容包括:
1)封面(按教务处制定的标准封面格式制作)
2)原创性声明
3)中文摘要(300字左右)、关键词
4)外文摘要、关键词
5)目次页(附件不统一编入)
6)论文主体部分:
引言(或绪论)、正文、结论
7)参考文献
8)致谢
9)附录(对论文支持必要时)
2.论文字数要求:
理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。
3.附件包括:
任务书、开题报告、外文译文、译文原文(复印件)。
4.文字、图表要求:
1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写
2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。
图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画
3)毕业论文须用A4单面打印,论文50页以上的双面打印
4)图表应绘制于无格子的页面上
5)软件工程类课题应有程序清单,并提供电子文档
5.装订顺序
1)设计(论文)
2)附件:
按照任务书、开题报告、外文译文、译文原文(复印件)次序装订
指导教师评阅书
指导教师评价:
一、撰写(设计)过程
1、学生在论文(设计)过程中的治学态度、工作精神
□优□良□中□及格□不及格
2、学生掌握专业知识、技能的扎实程度
□优□良□中□及格□不及格
3、学生综合运用所学知识和专业技能分析和解决问题的能力
□优□良□中□及格□不及格
4、研究方法的科学性;技术线路的可行性;设计方案的合理性
□优□良□中□及格□不及格
5、完成毕业论文(设计)期间的出勤情况
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
指导教师:
(签名)单位:
(盖章)
年月日
评阅教师评阅书
评阅教师评价:
一、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
二、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
建议成绩:
□优□良□中□及格□不及格
(在所选等级前的□内画“√”)
评阅教师:
(签名)单位:
(盖章)
年月日
教研室(或答辩小组)及教学系意见
教研室(或答辩小组)评价:
一、答辩过程
1、毕业论文(设计)的基本要点和见解的叙述情况
□优□良□中□及格□不及格
2、对答辩问题的反应、理解、表达情况
□优□良□中□及格□不及格
3、学生答辩过程中的精神状态
□优□良□中□及格□不及格
二、论文(设计)质量
1、论文(设计)的整体结构是否符合撰写规范?
□优□良□中□及格□不及格
2、是否完成指定的论文(设计)任务(包括装订及附件)?
□优□良□中□及格□不及格
三、论文(设计)水平
1、论文(设计)的理论意义或对解决实际问题的指导意义
□优□良□中□及格□不及格
2、论文的观念是否有新意?
设计是否有创意?
□优□良□中□及格□不及格
3、论文(设计说明书)所体现的整体水平
□优□良□中□及格□不及格
评定成绩:
□优□良□中□及格□不及格
教研室主任(或答辩小组组长):
(签名)
年月日
教学系意见:
系主任:
(签名)
年月日
课程设计任务书
学院
信息学院
专业
电子信息工程
学生姓名
班级学号
课程设计题目
基于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日
目录
1课设软件主要功能1
2类总体设计2
2.1类组合关系图2
2.2主类2
2.3其他类2
3类详细设计(画UML图),对类成员详细说明3
3.1CHANGEANIMALWINDOW类(主类)3
3.2ANIMAL类5
3.3POINT类6
3.4STONE类7
3.5HANDLEMOUSE类8
3.6AUTOMOVEANIMAL类9
4关键类成员函数流程图及代码(详细注释)12
5软件运行结果33
6结论及参考文献35
动物换位系统的设计
1.课设软件主要功能
本学期开设了Java程序设计基础这门课程,学习中了解到它具有面向对象、与平台无关、安全、多线程等特点。
使用Java语言不仅可以实现大型企业级的分布式应用系统,还能够为小型的、嵌入式设备进行应用程序的开发。
面向对象的开发方法有利于软件的维护和继承。
为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼熟练的应用面向对象的思想和设计方法解决实际问题的能力,进行了Java程序设计的课程设计。
此次课程设计的题目为简单的小游戏动物,通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、JCreator等开发工具的运用,拓宽常用类库的应用。
使我们通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。
设计GUI界面的动物换位游戏,游戏的结果是让左右两组动物交换位置,具体要求如下:
(1)程序分为3个级别,用户可以通过界面上提供的菜单来选择“初级”、“中级”和“高级”这3个级别。
对于“初级”级别,在水平排列的7块石头上左右各有3个类型相同的动物,中间的石头上没有动物;对于“中级”级别,在水平排列的9块石头上的左右各有4个类型相同的动物,中间的石头上没有动物;对于“高级”级别,在水平排列的11块石头上左右各有5个类型相同的动物,中间的石头上没有动物。
(2)用鼠标单击一个动物,如果该动物前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有其他动物,但隔位上的石头没有动物,该动物就跳跃到该石头上,其他情形时,该动物不跳跃(跳跃时不能越过两块石头)。
(3)左面的动物只能向右方跳跃,右面的动物只能向左方跳跃。
(4)用户可以通过界面上提供的单击按钮,让程序自动完成动物换位。
(5)可以随时单击界面上提供的按钮,重新开始当前的级别。
(6)用户通过菜单选项,可以选择左、右动物的图像。
在设计动物换位时,需要编写6个Java源文件:
ChangeAnimalWindow.java、Point.java、Animal.java、Stone.java、HandleMouse.java和AutoMoveAnimal.java。
动物换位除了需要编写的上述6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JmenuItem、File和Jbutton类。
动物换位所用到的一些重要的类以及之间的组合关系如图2.1所示。
2类总体设计
2.1类组合关系图
图2.1类之间的组合关系
2.2主类
ChangeAnimalWindow.java
ChangeAnimalWindow类负责创建动物换位的主窗口,该类含有main方法,程序从该类开始运行。
ChangeAnimalWindow类的成员变量中有五种重要类型的对象:
Animal、Point、Stone、HandleMouse和AutoMoveAnimal对象。
2.3其他类
2.3.1Animal.java
Animal类是JPanel的一个子类,创建的对象是1ChangeAnimalWindow类的重要成员之一,用来表示“动物”。
2.3.2Point.java
Point.java类负责创建确定位置的对象,是Point对象,可以确定Animal以及Stone对象在窗体中的位置。
2.3.3Stone.java
Stone类是Jbutton的一个子类,创建的对象表示“石头”。
2.3.4HandleMouse.java
HandleMouse类所创建调度对象负责处理鼠标事件。
2.3.5AutoMoveAnimal
AutoMoveAnimal类所创建的对象使用算法完成动物的自动换位。
3类详细设计(画UML图),对类成员详细说明
3.1ChangeAnimalWindow类
ChangeAnimalWindow类是javax.swing包中Jframe的一个子类,并实现了ActionListener接口,标明该类的主要成员变量和方法的UML图如图3.1所示。
图3.1ChangeAnimalWindow类的UML图
以下是UML图中关于数据和方法的详细说明。
(1)成员变量
·amountOfAnimal是int型数据,默认值是6。
amountOfAnimal的值用来确定ChangeAnimalWindow窗体中“动物”的数目,即Animal对象的数目。
·distance是int型数据,默认值是80。
Distance的值用来确定Point对象之间的距离,进而可以确定Animal之间,Stone之间的距离以及Animal和Stone对象外观的大小。
·animal是Animal型数组,其长度为amountOfAnimal。
·point是Point型数组,其长度为amountOfAnimal+1。
·stone是Stone型数组,其长度为amountOfAnimal+1。
·handleMouse是HandleMouse类创建的鼠标事件监听器,用来监视animal数组中Animal对象触发的鼠标事件。
·autoMoveAnimal是AutoMoveAnimal类创建的对话框。
通过该对话框可以实现程序自动将左右动物交换位置。
·bar是JmenuBar创建的菜单条,用来添加菜单。
Bar被放置在窗口的顶部。
·menuGrade是Jmenu创建的菜单,其名字为“选择级别”。
menuImage被添加到菜单条bar中。
·oneGradeItem、twoGradeItem和threeGradeItem是JmenuItem创建的菜单项,它们的名字依次为“初级”、“中级”和“高级”,这三个菜单项被添加到菜单项menuGrade中。
LeftImage、rightImage和defaultImage也是JmenuItem创建的菜单项,其名字依次为“左面动物的图像”、“右面动物的图像”和“左面动物的默认图像”,这三个菜单项被添加到菜单项menuImage中。
oneGradeItem、twoGradeItem和threeGradeItem以及leftImage、rightImage和defaultImage都将当前窗口注册为自己的ActionEvent事件监视器。
(2)方法
·ChangeAnimalWindow()是构造方法,负责完成窗口的初始化。
·init()方法负责完成Animal、Point和Stone对象的创建。
·setAmountOfAnimal(int)方法负责设置动物的个数,即amountOfAnimal的值。
·removeAnimalAndStone()方法负责从窗体中移掉动物和石头,即移掉Animal对象和Stone对象。
·needDoing()方法负责执行一些经常需要重复执行的代码。
·actionPerformed(ActionEvent)方法是ChangeAnimalWindow类实现的ActionListener接口中的方法。
ChangeAnimalWindow创建的窗口是oneGradeItem、twoGradeItem、threeGradeItem、LeftImage、rightImage、defaultImage菜单项和renew、quit、autoButton按钮的ActionEvent事件监视器。
当用户选中某个菜单项或单击按钮时,窗口将执行actionPerformed(ActionEvent)方法进行相应的操作。
如果用户选中oneGradeItem、twoGradeItem和threeGradeItem三个菜单的某一项时actionPerformed(ActionEvent)方法做执行的操作就是改变amountOfAnimal的值,并执行needDoing()方法,完成必要的初始化。
如果用户选中leftImage、rightImage的某一项时actionPerformed(ActionEvent)方法做执行的操作就是改变leftImageFile和rightImageFile的引用。
当用户单击renew按钮时,actionPerformed(ActionEvent)方法的操作是保持当前的amountOfAnimal的值,并执行needDoing()方法,完成必要的初始化,当用户单击quit按钮时,actionPerformed(ActionEvent)方法的操作是弹出autoMoveAnimal对话框,用户可以通过该对话框让程序显示动物换位过程。
·main(String)方法是程序运行的入口方法。
3.2Animal类
Animal类是javax.swing包中Jpanel容器的一个子类,创建的对象是数组animal的单元中的对象。
Animal型数组是ChangeAnimalWindow窗口的重要成员之一。
标明Animal类的主要成员变量和方法以及和ChangeAnimalWindow类之间组合关系的UML图如图3.2所示。
图3.2Animal类的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对象。
3.3Point类
Point创建的对象,负责刻画Animal对象和Stone对象所在的位置,无可显示的效果图。
Point创建的对象含有两个重要int型数据,分别用来表示窗体坐标系中的X轴坐标和Y轴坐标值,窗体坐标系的原点是窗体的左上角,向右是X轴正方向,向下时Y轴正方向。
Point类创建的对象是数组point的单元中的对象。
Point型数组point是ChangeAnimalWindow窗口的重要成员之一,其单元中的Point对象用来确定Animal对象和Stone对象在窗体中的位置。
标明Point类的主要成员变量和方法以及和ChangeAnimalWindow类之间的组合关系的UML图如图3.3所示。
图3.3Point类的UML图
以下是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类是javax.swing包中Jbutton按钮组件的一个子类,创建的对象是数组stone的单元中的对象。
Stone型数组stone是ChangeAnimalWindow窗口的重要成员之一。
标明Stone类主要成员变量和方法以及和ChangeAnimalWindow类之间的组合关系的UML图如图3.4所示。
图3.4Stone类的UML图
以下是UML图中关于数据和方法的详细说明。
(1)成员变量
iconStone用来确定Stone对象是的图标。
(2)方法
Stone()是构造方法,用来创建Stone对象。
3.5HandleMouse类
HandleMouse类是javax.swing包中Jpanel容器的一个子类,同时实现了MouseListener和ActionListener接口,创建的对象handleMouse是ChangeAnimalWindow类的成员之一,负责animal数组中的Animal对象上的鼠标事件。
当用户鼠标单击Animal对象时,handleMouse对象负责给出移动Animal对象的有关算法。
标明HandleMouse类的主要成员变量