汉诺塔游戏系统 2Word下载.docx

上传人:b****2 文档编号:15061594 上传时间:2022-10-27 格式:DOCX 页数:52 大小:135.88KB
下载 相关 举报
汉诺塔游戏系统 2Word下载.docx_第1页
第1页 / 共52页
汉诺塔游戏系统 2Word下载.docx_第2页
第2页 / 共52页
汉诺塔游戏系统 2Word下载.docx_第3页
第3页 / 共52页
汉诺塔游戏系统 2Word下载.docx_第4页
第4页 / 共52页
汉诺塔游戏系统 2Word下载.docx_第5页
第5页 / 共52页
点击查看更多>>
下载资源
资源描述

汉诺塔游戏系统 2Word下载.docx

《汉诺塔游戏系统 2Word下载.docx》由会员分享,可在线阅读,更多相关《汉诺塔游戏系统 2Word下载.docx(52页珍藏版)》请在冰豆网上搜索。

汉诺塔游戏系统 2Word下载.docx

(一)HannoiWindow类2

(二)AutoMoveDisc类9

(三)Disc类14

(四)HandleMouse类15

(五)Tower类19

(六)TowerPoint类23

四、系统测试25

(一)主菜单:

25

(二)游戏等级选择:

(三)盘子数量选择:

26

(四)变动颜色选择26

(五)背景音乐选择26

(六)用户自己演示结果:

27

五、总结27

六、附件(代码、部分图表)28

汉诺塔游戏系统

一、系统开发的背景

设计GUI界面的Hannoi塔游戏,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。

二、系统分析与设计

(一)系统功能要求

1、有三个表示塔的对象,分别命名为A、B和C。

A塔上有若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A塔上,大盘在下,小盘在上。

用户可以用鼠标拖动盘子,把A塔上的盘子全部移动到另外两个塔中的任何一个塔上。

要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。

2、用户也可以选择让程序自动演示。

选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。

3、可以由用户自己设置盘子数量和盘子大小。

4、可以改变盘子的颜色、背景颜色以及背景音乐。

5、游戏分为初、中、高三个等级。

6、可以记录游戏时间并且设有从新开始按钮。

(二)系统模块结构设计

通过对系统功能的分析,汉诺塔游戏系统功能如图所示。

TowerPoint

图1:

汉诺塔游戏系统功能图

通过上图的功能分析,把整个系统划分为6个模块:

我设计的Hannoi塔,除了要编写的6个java文件(HannoiWindow、AutoMoveDisc、Disc、HandleMouse、Tower、TowerPoint)所给出的类外,还需要java系统提供的一些重要的类,如JButton,JCheckBox等。

汉诺塔中有三个座,名字分别为A,B,C。

刚开始的时候A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。

用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。

释放鼠标来放置该盘子。

程序要求用户在移动盘子的过程中,不允许把大盘子放置在小盘子的上面,用户最终要完成的是把A座上的全部盘子移动到B座或C座上。

用户可以通过Hannoi塔界面提供的改变盘子数目功能来改变盘子的数目,用户可以通过单击Hannoi塔界面上提供的按钮,让程序自动完成把A座上的盘子全部移动到C座上。

用户在移动盘子的过程中,可以随时单击Hannoi塔界面上提供的按钮,重新开始。

三、系统的设计与实现

(一)HannoiWindow类

该类主要功能是设置主界面的布局、相关按钮和监听事件

该模块的具体代码如下所示:

importjava.applet.Applet;

importjava.applet.AudioClip;

importjavax.swing.*;

importjava.awt.*;

importjava.awt.event.*;

importjava.io.File;

import.MalformedURLException;

import.URL;

importjavax.swing.JOptionPane;

publicclassHannoiWindowextendsJFrameimplementsActionListener{

Towertower=null;

//Tower创建的tower容器,刻画了汉诺塔的结构,放置在主界面的中心

intamountOfDisc=3;

//确定tower对象中“盘子”数目(默认为3个)

intnumber=0;

ColordiscColor;

HandleMousehandleMouseTime;

Timertime=newTimer(1000,this);

char[]towerName={'

A'

'

B'

C'

};

//容器tower中三个座的名字

JMenuBarbar;

//菜单棒

JMenumenuGrade,menuDiscNum,menuMM,menuColor;

//

booleantag=true;

Filemusicfile=newFile("

七里香.mid"

);

URLurl;

AudioClipclip;

JMenumenumusic;

JMenuItemoneGradeItem,twoGradeItem,threeGradeItem,discColorItem,backColorItem,maxDiscWidth,minDiscWidth,DiscNum,musicstart,musicstop;

JButtonrenew=null;

JButtonautoButton=null;

JPanelcenter=newJPanel();

JTextFieldtext;

//----------------------

publicJRadioButtoncyan,red,green,blue,yellow;

publicButtonGroupbuttonGroup;

HannoiWindow(){//构造函数,设置主界面布局

super("

汉诺塔小游戏(HannoiGame)"

tower=newTower(towerName);

tower.setAmountOfDisc(amountOfDisc);

//设置盘子的数量

tower.setMaxDiscWidth(120);

//设置最大盘子的宽度

tower.setMinDiscWidth(50);

//设置最小盘子的宽度

tower.setDiscHeight(16);

//设置盘子的高度

tower.putDiscOnTower();

//放置盘子到塔上

add(tower,BorderLayout.CENTER);

//增添菜单选项

bar=newJMenuBar();

menuGrade=newJMenu("

选择关卡"

menuColor=newJMenu("

变换颜色"

menuDiscNum=newJMenu("

盘子数量"

menuMM=newJMenu("

盘子大小"

oneGradeItem=newJMenuItem("

第一关_初级"

twoGradeItem=newJMenuItem("

第二关_中级"

threeGradeItem=newJMenuItem("

第三关_高级"

discColorItem=newJMenuItem("

盘子颜色"

backColorItem=newJMenuItem("

背景颜色"

maxDiscWidth=newJMenuItem("

最大盘子宽度"

minDiscWidth=newJMenuItem("

最小盘子宽度"

DiscNum=newJMenuItem("

设置盘子数量"

menuGrade.add(oneGradeItem);

//将用户的操作设置返回给相应的变量

menuGrade.addSeparator();

menuGrade.add(twoGradeItem);

menuGrade.add(threeGradeItem);

menuColor.add(discColorItem);

menuColor.add(backColorItem);

menuMM.add(maxDiscWidth);

menuMM.add(minDiscWidth);

menuDiscNum.add(DiscNum);

bar.add(menuGrade);

bar.add(menuDiscNum);

bar.add(menuMM);

bar.add(menuColor);

setJMenuBar(bar);

//加入代码

menumusic=newJMenu("

设置背景音乐"

musicstart=newJMenuItem("

背景音乐开启"

musicstop=newJMenuItem("

背景音乐关闭"

menumusic.add(musicstart);

menumusic.add(musicstop);

bar.add(menumusic);

try{

url=musicfile.toURL();

}catch(MalformedURLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}

clip=Applet.newAudioClip(url);

clip.play();

//加入下2行代码

musicstart.addActionListener(this);

musicstop.addActionListener(this);

//

oneGradeItem.addActionListener(this);

twoGradeItem.addActionListener(this);

threeGradeItem.addActionListener(this);

DiscNum.addActionListener(this);

maxDiscWidth.addActionListener(this);

minDiscWidth.addActionListener(this);

discColorItem.addActionListener(this);

backColorItem.addActionListener(this);

renew=newJButton("

重新开始"

renew.addActionListener(this);

autoButton=newJButton("

自动演示"

text=newJTextField("

您的游戏时间:

0秒"

10);

autoButton.addActionListener(this);

JPanelnorth=newJPanel();

Stringmess="

将全部盘子从"

+towerName[0]+"

座搬运到"

+towerName[1]+

"

座或"

+towerName[2]+"

座"

;

JLabelhintMess=newJLabel(mess,JLabel.CENTER);

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

当前位置:首页 > 农林牧渔 > 林学

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

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