基于java的动物换位游戏软件设计Word格式.docx
- 文档编号:21586668
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:25
- 大小:405.97KB
基于java的动物换位游戏软件设计Word格式.docx
《基于java的动物换位游戏软件设计Word格式.docx》由会员分享,可在线阅读,更多相关《基于java的动物换位游戏软件设计Word格式.docx(25页珍藏版)》请在冰豆网上搜索。
(3)左面的动物只能向右方跳跃,右面的动物只能向左方跳跃。
(4)用户可以通过单击界面上提供的按钮,让程序自动完成动物换位。
(5)可以随时单击界面上提供的按钮,重新开始当前的级别。
(6)用户通过菜单选项,可以选择左、右动物的图像。
2.类总体设计
2.1类组合关系图
在设计动物换位时需要编写10个Java源文件:
ChangeAnimalWindow.java、Animal.java、Point.java、Stone.java、HandleMouse.java、AutoMoveAnimal.java、Customdlg.java、People.java、Record.java和ShowRecordDialog.java。
动物换位除了需要编写上述10个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如:
JmenuItem、File和Jbutton类等。
动物换位所用到的一些重要的类以及之间组合关系如图2.1所示。
图2.1类之间的组合关系
2.2系统流程图
图2.2系统流程图
2.3主类
ChangeAnimalWindow类负责创建动物换位的主窗口,该类含有main方法,程序从该类开始执行。
2.4其他类
2.4.1Animal.java
Animal类是JPanel的一个子类,创建的对象是ChangeAnimalWindow类的重要成员之一,用来表示“动物”。
2.4.2Point.java
Point类负责创建确定位置的对象,使用Point对象,可以确定Animal以及Stone对象在窗体中的位置。
2.4.3Stone.java
Stone类是JButton的一个子类,创建的对象表示“石头”。
2.4.4HandleMouse.java
HandleMouse类所创建的对象负责处理鼠标事件。
2.4.5AutoMoveAnimal.java
AutoMoveAnimal类所创建的对象使用算法完成动物的自动换位。
2.4.6Customdlg.java
Customdlg类所创建的对象用来设置“自定义”级别的动物数量。
2.4.7People.java
People对象封装用户的名字和成绩,以便ShowRecordDialog对象可以排序。
2.4.8Record.java
Record类是javax.swing包中JDialog对话框的子类,当用户成功完成相应级别的游戏时,Record创建的对象负责保存用户的名字和成绩到相应的级别文件中。
2.4.9ShowRecordDialog.java
ShowRecordDialog类是javax.swing包中JDialog对话框的子类,当用户单击查看相应的级别排行榜时,ShowRecordDialog创建的对象负责显示用户的成绩。
3.类详细设计
3.1主类
图3.1ChangeAnimalWindow类的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)”。
menuHelp也是JMenu创建的菜单,其名字为“帮助”。
menuHero也是JMenu创建的菜单,其名字为“英雄榜”。
menuGrade、menuImage、menuHero和menuHelp被添加到菜单条bar中。
●oneGradeItem、twoGradeItem、threeGradeItem和custom是JMenuItem创建的菜单项,它们的名字依次为“初级”、“中级”、“高级”和“自定义”,这四个菜单项被添加到菜单项menuGrade中。
leftImage、rightImage和defaultImage也是JMenuItem创建的菜单项,其名字依次为“左面动物的图像”、“右面动物的图像”和“左右面动物的默认图像”,这三个菜单项被添加到菜单项menuImage中。
oneGradeResult、twoGradeResult、threeGradeResult、customGradeResult和limitTime也是JMenuItem创建的菜单项,其名字依次为“初级英雄榜”、“中级英雄榜”、“高级英雄榜”、“自定义英雄榜”、“我超时了吗”,这五个菜单项被添加到菜单项menuHero中。
helpcontent和aboutUs是JMenuItem创建的菜单项,它们的名字依次为“游戏规则”、和“关于我们”,这两个菜单项被添加到菜单项menuHelp中。
oneGradeItem、twoGradeItem、threeGradeItem和custom以及leftImage、rightImage和defaultImage等菜单项都将当前窗口注册为自己的ActionEvent事件监视器。
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其他类
图3.2Animal类的UML图
图3.3Point类的UML图
图3.4Stone类的UML图
图3.5HandleMouse类的UML图
图3.6AutoMoveAnimal类的UML图
4.关键成员函数代码
ChangeAnimalWindow.java(主类)
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjava.util.ArrayList;
importjava.io.*;
importjavax.swing.filechooser.*;
publicclassChangeAnimalWindowextendsJFrameimplementsActionListener
{
intamountOfAnimal=6;
intdistance=80;
Animal[]animal;
Point[]point;
Stone[]stone;
HandleMousehandleMouse;
AutoMoveAnimalautoMoveAnimal;
FileleftImageFile,rightImageFile;
FilefileOneGrade,fileTwoGrade,fileThreeGrade,filecustomGrade;
JButtonrenew,quit,autoButton=null;
JMenuBarbar;
JMenumenuGrade,menuImage,menuHelp,menuHero;
JMenuItemoneGradeResult,twoGradeResult,threeGradeResult,customGradeResult;
JMenuItemoneGradeItem,twoGradeItem,threeGradeItem,limitTime;
JMenuItemcustom;
JMenuItemhelpcontent,aboutUs;
JMenuItemleftIamge,rightIamge,defaultImage;
JPanelpCenter;
ShowRecordDialogshowDiolag=null;
ChangeAnimalWindow()
{
fileOneGrade=newFile("
初级英雄排行榜.txt"
);
fileTwoGrade=newFile("
中级英雄排行榜.txt"
fileThreeGrade=newFile("
高级英雄排行榜.txt"
filecustomGrade=newFile("
自定义英雄排行榜.txt"
pCenter=newJPanel();
pCenter.setBackground(Color.pink);
pCenter.setLayout(null);
handleMouse=newHandleMouse();
autoMoveAnimal=newAutoMoveAnimal();
leftImageFile=newFile("
dog.jpg"
rightImageFile=newFile("
cat.jpg"
init();
bar=newJMenuBar();
menuGrade=newJMenu("
选择级别"
menuImage=newJMenu("
选择动物图像(JPG,GIF)"
menuHero=newJMenu("
英雄榜"
menuHelp=newJMenu("
帮助"
oneGradeItem=newJMenuItem("
初级"
twoGradeItem=newJMenuItem("
中级"
threeGradeItem=newJMenuItem("
高级"
custom=newJMenuItem("
自定义"
leftIamge=newJMenuItem("
左面动物的图像"
rightIamge=newJMenuItem("
右面动物的图像"
defaultImage=newJMenuItem("
左右面动物的默认图像"
oneGradeResult=newJMenuItem("
初级英雄榜"
twoGradeResult=newJMenuItem("
中级英雄榜"
threeGradeResult=newJMenuItem("
高级英雄榜"
customGradeResult=newJMenuItem("
自定义英雄榜"
limitTime=newJMenuItem("
我超时了吗"
helpcontent=newJMenuItem("
游戏规则"
aboutUs=newJMenuItem("
关于我们"
menuGrade.add(oneGradeItem);
menuGrade.add(twoGradeItem);
menuGrade.add(threeGradeItem);
menuGrade.add(custom);
menuImage.add(leftIamge);
menuImage.add(rightIamge);
menuImage.add(defaultImage);
menuHero.add(oneGradeResult);
menuHero.add(twoGradeResult);
menuHero.add(threeGradeResult);
menuHero.add(customGradeResult);
menuHero.add(limitTime);
menuHelp.add(helpcontent);
menuHelp.add(aboutUs);
bar.add(menuGrade);
bar.add(menuImage);
bar.add(menuHero);
bar.add(menuHelp);
setJMenuBar(bar);
oneGradeItem.addActionListener(this);
twoGradeItem.addActionListener(this);
threeGradeItem.addActionListener(this);
custom.addActionListener(this);
leftIamge.addActionListener(this);
rightIamge.addActionListener(this);
defaultImage.addActionListener(this);
oneGradeResult.addActionListener(this);
twoGradeResult.addActionListener(this);
threeGradeResult.addActionListener(this);
customGradeResult.addActionListener(this);
limitTime.addActionListener(this);
helpcontent.addActionListener(this);
aboutUs.addActionListener(this);
renew=newJButton("
重新开始"
renew.addActionListener(this);
autoButton=newJButton("
自动演示"
autoButton.addActionListener(this);
quit=newJButton("
撤消"
quit.addActionListener(this);
JPanelnorth=newJPanel();
north.add(renew);
north.add(quit);
north.add(autoButton);
Stringmess="
互换左右动物位置"
;
JLabelhintMess=newJLabel(mess,JLabel.CENTER);
north.add(hintMess);
add(north,BorderLayout.NORTH);
add(pCenter,BorderLayout.CENTER);
JPanelsouth=newJPanel();
south.add(handleMouse);
add(south,BorderLayout.SOUTH);
setVisible(true);
setBounds(60,60,710,300);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
if(!
fileOneGrade.exists()){
try{fileOneGrade.createNewFile();
}
catch(IOExceptionexp){}
}
fileTwoGrade.exists()){
try{fileTwoGrade.createNewFile();
fileThreeGrade.exists()){
try{fileThreeGrade.createNewFile();
filecustomGrade.exists()){
try{filecustomGrade.createNewFile();
handleMouse.gradeFile=fileOneGrade;
showDiolag=newShowRecordDialog();
publicvoidinit()
animal=newAnimal[amountOfAnimal];
point=newPoint[amountOfAnimal+1];
stone=newStone[amountOfAnimal+1];
intspace=distance;
for(inti=0;
i<
point.length;
i++)
point[i]=newPoint(space,100);
space=space+distance;
animal.length;
animal[i]=newAnimal();
animal[i].addMouseListener(handleMouse);
if(i<
animal.length/2)
animal[i].setIsLeft(true);
else//if(i>
animal[i].setIsLeft(false);
//elseif(i==animal.length/2+1)
//{
//if(animal[i].equals(animal[i]))
//animal[i].setIsLeft(true);
//else
//animal[i].setIsLeft(false);
//}
stone.length;
stone[i]=newStone();
pCenter.add(stone[i]);
stone[i].setSize(distance*8/9,18);
intw=stone[i].getBounds().width;
inth=stone[i].getBounds().height;
stone[i].setLocation(point[i].getX()-w/2,point[i].getY());
point[i].setThisStone(stone[i]);
animal[i].setSize(distance*6/7,distance*3/4);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 java 动物 换位 游戏软件 设计