基于Java的动物换位游戏软件设计Word下载.docx

上传人:b****1 文档编号:881722 上传时间:2023-04-29 格式:DOCX 页数:29 大小:405.81KB
下载 相关 举报
基于Java的动物换位游戏软件设计Word下载.docx_第1页
第1页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第2页
第2页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第3页
第3页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第4页
第4页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第5页
第5页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第6页
第6页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第7页
第7页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第8页
第8页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第9页
第9页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第10页
第10页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第11页
第11页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第12页
第12页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第13页
第13页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第14页
第14页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第15页
第15页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第16页
第16页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第17页
第17页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第18页
第18页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第19页
第19页 / 共29页
基于Java的动物换位游戏软件设计Word下载.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于Java的动物换位游戏软件设计Word下载.docx

《基于Java的动物换位游戏软件设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于Java的动物换位游戏软件设计Word下载.docx(29页珍藏版)》请在冰点文库上搜索。

基于Java的动物换位游戏软件设计Word下载.docx

(2)用鼠标单击一个动物,如果该动物的前方的石头上没有动物,该动物就跳跃到该石头上,如果该动物前方的石头上有其他的动物,但隔位上的石头没有动物,该动物就越过自己前面的动物跳跃到石头上,其他情形时,该动物不跳跃(跳跃时不能超过2块石头)。

(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

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2