java课程设计方案Hannoi汉诺塔游戏
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HUBEINORMALUNIVERSITY
Java程序设计
Hannoi塔游戏
论文题目Hannoi塔游戏
学生
指导教师
所在院系
专业名称
完成时间
摘要
《JAVA语言实用教程》是计算机相关专业的必修专业基础课程,其实践性、应用性很强。实践教案环节是必不可少的一个重要环节。本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA语言实用教程》课程后,进行的一次全面的综合训练,JAVA语言实用教程的设计目的是加深对理论教案内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
目录
一、课程设计任务及要求3
1、课程设计任务3
2、设计要求3
二、需求分析4
1、系统需求分析4
2、系统概述5
3、系统运行环境6
三、设计思路6
概要设计7
四、详细设计7
package Hannoi。7
HannoiWindow类7
AutoMoveDisc类15
Disc类21
HandleMouse类22
Tower类27
TowerPoint 类31
五、运行调试与分析讨论33
六、设计体会与小结36
1.设计体会36
2.小结36
参考文献37
致谢37
一、课程设计任务及要求
1、课程设计任务
设计GUI界面的Hannoi塔游戏,用户可以通过拖动鼠标移动各个塔上的盘子,程序也可以自动演示盘子的移动过程。
2、设计要求
(1)有三个表示塔的对象,分别命名为A、B和C。A塔上有
若干个盘子,盘子的大小不等,并按着大小顺序依次摆放在A 塔上,大盘在下,小盘在上。用户可以用鼠标拖动盘子,把A 塔上的盘子全部移动到另外两个塔中的任何一个塔上。要求每次只能移动一个盘子,在任何时候不允许大盘压在小盘的上面。
(2)用户也可以选择让程序自动演示。选择自动演示后,程序将以动画形式演示把A塔上的盘子全部移到C塔的过程,并将移动过程以文本形式显示在一个文本区中。
(3)可以由用户自己设置盘子数量和盘子大小。
(4)可以改变盘子的颜色、背景颜色以及背景音乐。
(5)游戏分为初、中、高三个等级。
(6)可以记录游戏时间并且设有从新开始按钮。
二、需求分析
1、系统需求分析
使用java面向对象语言设计汉诺塔游戏,此游戏要求:1)界面要求:
(1)尽量使用图形界面实现,要符合日常软件使用规
范来设计菜单和界面。
(2)如果无法实现图形界面,则在命令行方式下也需
要提供菜单,方便用户操作(盘子可以自己规定)。
2)其他要求:可以保存自己的自动演示记录
3)每次移动一个盘子,小的只能叠在大的上面。4)把所有碟子从A塔柱全部移到C塔柱上
如果A盘上的盘子全都移动到了C塔柱上,则游戏成功;否则失败。
(1)标识符命名遵循Windows命名规范。
(2)能够注意各种异常处理,注重提高程序运行效
率。
2、系统概述
“汉诺塔”游戏是利用面向对象语言java写的一个简单的游戏,它的目标是把最左边塔柱上的盘子按一定的规则移动到最右过的塔柱上去,规则如下:
(1)有三根塔柱A,B,C。A杆上有若干盘子(由小到大排列)
(2)需要把A上的盘子搬到C上面去(由小到大排列)(3)每次只能移动一个盘子且大的盘子不能叠加到小的盘子上面
3、系统运行环境
任何具有jre运行环境的计算机,可在netbeans和eclipse 中运行。
三、设计思路
我设计的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 塔界面上提供的按钮,重新开始。
概要设计
主要要实现的功能有: 完成汉诺塔的“手工移动演示”;完成汉诺塔的“自动移动演示”;增加计时功能,即显示用户完成移动盘子所花费的时间;用户可以设置最大和最小盘子的大小;用户可以设置盘子的数目;用户可以设置盘子的颜色、背景颜色以及背景音乐;用户可以将自动移动盘子的文本信息保存到文件中。
四、详细设计
package Hannoi。
HannoiWindow类
/* HannoiWindow类
* 该类主要功能是设置主界面的布局、相关按钮和监听事件
* */
import java.applet.Applet。
import java.applet.AudioClip。
import javax.swing.*。
import java.awt.*。
import java.awt.event.*。
import java.io.File。
import .MalformedURLException。
import .URL。
import javax.swing.JOptionPane。
public class HannoiWindow extends JFrame implements ActionListener{
Tower tower=null。 //Tower创建的tower容器,刻画了汉诺塔的结构,放置在主界面的中心
int amountOfDisc=3。 //确定tower对象中“盘子”数目(默认为3个)
int number=0。