hannoi塔java程序_课内资源 - 基于Java实现的Hannoi汉诺塔自动演示程序

1 设计要求

设计GUI界面的Hannoi塔。汉诺塔中有三个座,名字分别为A,B,C。初始状态时A塔上有3个大小不等的盘子,这些盘子从座底到座顶按着大小顺序依次摆放在A座上。用户可以用鼠标选中盘子,然后通过拖动鼠标来移动盘子。释放鼠标来放置该盘子。

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

用户可以通过Hannoi塔界面提供的菜单来选择初级、中级和高级三个级别。初级级别A座上有3个大小不等盘子、中级级别A座上有4个大小不等盘子、高级级别A座上有5个大小不等盘子。

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

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

2 总体设计

在设计hannoi塔时,需编写6个java源文件:HannoiWindow.java、Tower.java、TowerPoint.java、Disc.java、HandleMouse.java和AutoMoveDisc.java。

Hannoi塔除了要编写的6个Java源文件所给出的类外,还需要Java系统提供的一些重要的类,如JMenuBar、JMenu、JMenuItem和JButton。Hannoi塔所用到的一些重要的类以及之间的组合关系如图1所示:

73b557f1b3b9704e96c6f5003cae6b2f.png

2.1 HannoiWindow.java类设计

HannoiWindow类负责创建Hannoi塔的主窗口,该类含有main方法,Hannoi塔从该类开始执行。HannoiWindow类的成员变量中有五种重要类型的对象、一个int基本型数据和一个char型数组。五种类型的对象分别是:Tower、JMenuBar、JMenu、JMenuItem和JButton对象。

HannoiWindow类的主要成员的作用将在后面的详细设计中阐述。

2.2 Tower类设计

Tower类是javax.swing包中Jpanel容器的子类,创建的容器被添加到HannoiWindow窗口的中心。Tower类的成员变量中有四种重要类型的对象、一个int基本型数据和一个char型数组。四种类型的对象分别是:Disc、TowerPoint、HandleMouse、和AutoMoveDisc对象。Tower类的主要成员的作用将在后面的详细设计中阐述。

2.3 Disc类设计

Disc类是Jbutton的一个子类,创建的对象时Tower容器中的一个按钮,用来表示Tower中的“盘子”。

2.4 TowerPoint类设计

TowerPoint类负责在Tower中创建表示位置的塔点对象。

2.5 HandleMouse类设计

HandleMouse类创建的对象负责处理鼠标事件。

2.6 AutoMoveDisc类设计

AutoMoveDisc类创建的对象负责自动移动盘子从一个座到另一个座。

3 详细设计

3.1 HannoiWindow类

HannoiWindow类是javax.swing包中JFrame的一个子类。

3.2 Tower类

Tower类是javax.swing包中Jpanel容器的一个子类,创建的对象tower是HannoiWindow窗口的成员之一,被添加到HannoiWindow窗口的中心位置。

3.3 Disc类

Disc类是javax.swing包中JButton类的子类,所创建的对象称作Hannoi塔中的“盘子”。Tower类有Disc类型的数组disc。disc数组的单元是用Disc创建的对象,被放置在Tower所创建的容器tower中,用来表示tower中的盘。

3.4 TowerPoint类

TowerPoint所创建的对象将作为Tower类中TowerPoint型数组pointA、pointB和pointC中的元素。

3.5 HandleMouse类

HandleMouse类实现了MouseListener和MouseMotionListener接口,创建的对象handleMouse是tower容器的成员之一,负责监视tower容器中Disc盘子对象上的鼠标事件。当用户用鼠标单击tower中的盘子,并拖动鼠标时,handleMouse对象负责给出移动盘子的有关算法。

3.6 AutoMoveDisc类

AutoMoveDisc类实现了ActionListener接口,创建的对象autoMoveDisc是Tower的成员之一。

4 代码调试问题

将前面6个Java源文件:HannoiWindow.java、Tower.java、TowerPoint.java、Disc.java、HandleMouse.java和AutoMoveDisc.java保存同一目录中。分别编译这6个Java源文件,或运行“javac *.java”命令,编译全部源文件,然后运行主类,即运行HannoiWindow类。

5 软件发布

可以使用jar.exe命令制作JAR文件夹来发布编写的软件。

首先用文本编辑器,如Windows下的“记事本”,编写一个清单文件:

mymoon.mf

Manifest-Version:1.0

Main-Class:HannoiWindow

Created-By:1.2(SunMicrosoftInc.)

将mymoon.mf 保存到D:\ch3中,即和应用程序所用的字节码文件保存在相同的目录中。

注意:清单文件中的“Manifest-Version:”和1.0之间、“Main-Class:”

和主类HannoiWindow之间以及“Created-By:”和1.2之间必须有且只有一个空格。

生成JAR文件

D:\ch3\jar cfmHannoi.jar mymoon.mf*.class

其中,参数c表示要生成一个新的JAR文件,f表示要生成的JAR文件的名字,m表示清单文件的名字。

现在就可以将Hannoi.jar复制到任何一个安装了Java运行环境(版本号需高于1.2d的计算机上)的计算机上,用户用鼠标双击该文件的图标就可以运行该软。

6 程序运行效果

选择Hannoi塔的级别

18e0f94ea9ed811f966bc8d3b4beb0d7.png

Hannoi塔高级玩法

6d32c6b2f8964519140132f68966eea1.png

中级Hannoi塔自动演示玩法

8defa08b63361ad577243dd3d8476cd6.png

7 设计心得

通过这一周的实训,虽然实训的时间不长,但是总体上收获挺大的,当我们正式准备学习实训java编程技术时,让我感到非常高兴,因为java一直学的是课本知识,所以实训对于我来说是必须要学会熟练操作的。当然开始学习后也并非是想象中那样顺利,开始的学习让我异常感到学习任务的艰巨,因为学习中我遇到了很多以前未曾遇到的难点,有时后也难免会失去耐心,但是,通过老师的指导,自己的努力的练习,我顺利的化解了一道道的障碍。克服了Java学习上的一道道难关,现在自己已经基本掌握了java的基础知识。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值