动物换位游戏java课设
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
成绩评定表
课程设计任务书
目录
1.设计目的 (4)
2.设计内容 (4)
3.课程软件主要功能 (4)
4.类总体设计 (4)
类组合关系图 (5)
主类 (5)
其他类 (5)
5.类详细设计(画UML图) (6)
6.关键类成员函数流程图及代码 (7)
总体流程图 (7)
程序代码 (8)
7.软件运行结果 (14)
8.结论 (16)
参考文献 (16)
1.设计目的
1.通过实验,使学生进一步加深面向对象的编程设计思想;
2.训练掌握、加深理解并巩固《Java程序设计》课程中所学到的基本概念、编程思路;
3.综合运用Java程序设计的编程方法,能够利用这些程序设计方法来解决工程和科研中常见的实际问题;
4.培养分析解决问题的实际动手能力,进一步提高进行大型程序设计的能力。
2.设计要求
设计GUI界面的动物换位游戏,游戏的结果是让左右两组动物交换位置。具体内容如下:
程序分为4个级别,用户可以通过界面上提供的菜单选择“初级”、“中级”、“高级”、“自定义”这4个级别。对于“初级”级别,在水平排列的7块石头上的左右各有3个类型相同的动物,中间的石头上没有动物;对于“中级”级别,在水平排列的9块石头上的左右各有4个类型相同的动物,中间的石头上没有动物;对于“高级”级别,在水平排列的11块石头上的左右各有5个类型相同的动物,中间的石头上没有动物;对于“自定义”级别,用户可以输入自己想设置的一个动物数量(输入的数必须是偶数),在水平排列的N块石头上的左右各有(N-1)/2个类型相同的动物,中间的石头上没有动物。
3.课程软件主要功能
程序分为不同的级别,左右各有动物,中间石头没有动物,将左右动物交换,不可后退。用
鼠标单击一个动物,如果该动物前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有动物,但隔位上的石头没有动物,该动物就越过自己前面的动物跃到石头上,其他情形时,该动物不能跳跃。如果对游戏有疑问可以点击帮助,查看游戏规则。不能持续玩的可以点自动演示,将自动完成游戏,可以帮助游戏者更好的了解系统的主体功能
4.类总体设计
设计动物换位时需要编写10个Java源文件:、、、、、、、、和。
动物换位除了需要编写上述10个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如:JmenuItem、File和Jbutton类等。动物换位所用到的一些重要的类以及之间组合关系如图4-1所示。
类组合关系图
以下是10个Java源文件的总体设计:
图4-1 类之间的组合关系
主类
ChangeAnimalWindow类负责创建动物换位的主窗口,该类含有main方法,程序从该类开始执行。
其他类
Animal类是JPanel的一个子类,创建的对象是ChangeAnimalWindow类的重要成员之一,用来表示“动物”。
Point类负责创建确定位置的对象,使用Point对象,可以确定Animal以及Stone对象在窗体中的位置。
Stone类是JButton的一个子类,创建的对象表示“石头”。
HandleMouse类所创建的对象负责处理鼠标事件。
AutoMoveAnimal类所创建的对象使用算法完成动物的自动换位。
Customdlg类所创建的对象用来设置“自定义”级别的动物数量。
People对象封装用户的名字和成绩,以便ShowRecordDialog对象可以排序。
Record类是包中JDialog对话框的子类,当用户成功完成相应级别的游戏时,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中。
ShowRecordDialog类是包中JDialog对话框的子类,当用户单击查看相应的级别排行榜时,ShowRecordDialog创建的对象负责显示用户的成绩。
5.类详细设计(画UML图)
ChangeAnimalWindow类是包中的JFrame的一个子类,并实现了ActionListener接口,标明该类的主要成员变量和方法的UML图如图5-1所示。
以下是UML图中有关数据和方法的详细说明:
图5-1 ChangeAnimalWindow类的UML图
6.关键类成员函数流程图及代码
总体流程图
图6-1 总体流程图
程序代码
import .*;
import .*;
import .*;
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;
JButton renew,quit,autoButton=null;
JMenuBar bar;
JMenu menuGrade,menuImage;
JMenuItem oneGradeItem,twoGradeItem,threeGradeItem;
JMenuItem leftIamge,rightIamge,defaultImage;
JPanel pCenter;
ChangeAnimalWindow(){
pCenter=new JPanel();
;
(null);
handleMouse=new HandleMouse();
autoMoveAnimal=new AutoMoveAnimal();
leftImageFile=new File("");
rightImageFile=new File("");
init();
bar=new JMenuBar();
menuGrade=new JMenu("选择级别");
menuImage=new JMenu("选择动物图像(JPG,GIF)");
oneGradeItem=new JMenuItem("初级");
twoGradeItem=new JMenuItem("中级");
threeGradeItem=new JMenuItem("高级");
leftIamge=new JMenuItem("左面动物的图像");
rightIamge=new JMenuItem("右面动物的图像");
defaultImage=new JMenuItem("左右面动物的默认图像"); (oneGradeItem);
(twoGradeItem);
(threeGradeItem);
(leftIamge);
(rightIamge);
(defaultImage);
(menuGrade);
(menuImage);
setJMenuBar(bar);
(this);
(this);
(this);
(this);
(this);
(this);
renew=new JButton("重新开始");
(this);
autoButton=new JButton("自动演示");
(this);
quit=new JButton("撤消");
(this);
JPanel north=new JPanel();
(renew);