Hannoi塔汉诺塔Java课程设计报告.docx
《Hannoi塔汉诺塔Java课程设计报告.docx》由会员分享,可在线阅读,更多相关《Hannoi塔汉诺塔Java课程设计报告.docx(17页珍藏版)》请在冰豆网上搜索。
![Hannoi塔汉诺塔Java课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-2/3/87f3a450-d729-4884-b93d-8fd9f32f2f1b/87f3a450-d729-4884-b93d-8fd9f32f2f1b1.gif)
Hannoi塔汉诺塔Java课程设计报告
Java课程设计报告
题目汉诺塔
所在院系 软件学院
学生姓名邓小文专业土木+软件工程
班级08-1班学号14号
2010年7月17日
一、总体设计
1.本系统的主要功能
(1)本软件是汉诺塔游戏;
(2)可以实现计时功能;
(3)游戏结束时记录排名;
(4)在玩游戏的同时还可以欣赏歌曲;
(5)不知如何玩时可以实现自动演示;
2.系统包含的类及类之间的关系
为了实现本软件的各项功能,对要在本软件中需要用到的源文件进行总体设计。
本系统共包括12个java源文件。
1.各个类之间的关系如图1所示。
Help
Tower
HannoiTower
Music
Disk
TowerPoint
Time
Record
ShowRecord
People
图1-1各个类之间的关系
2.java源文件及其功能,如表所示。
表1java源文件及其功能
序号
文件名
主要功能
备注
1
Tower
用户可以在主窗口选择开始搬运盘子或自动演示。
程序默认的情况是手动搬运盘子
2
HannoiTower
该文件生成的类负责创建Hannoi塔,汉诺塔由A、B、C三个塔组成,可以用鼠标搬运各个塔上的盘子。
3
Disk
该文件生成的类负责创建盘子对象
4
TowerPoint
该文件生成的类负责为Hannoi塔创建塔点对象,即盘子放置的位置。
5
Time
记录玩家完成游戏所需的时间
6
People
记录成绩能够排进排行榜的选手
7
About
关与本软件的制作信息
8
Help
帮助主题
9
Record
记录
10
Music
该文件负责生成一款播放器,可以选取玩家自己喜欢的歌曲欣赏。
播放的歌曲需要是“wav”等形式的。
11
ShowRecord
该文件用来实现玩家看英雄榜的情况。
二、详细设计
为了实现总体设计中的各个类之间的接口连接,使玩家能够顺畅的使用本软件进行游戏,考虑用详细设计来给玩家一一介绍。
以下是对本软件的详细设计:
1.主类Tower
(1)该类用到的主要成员变量见表5
表5类Tower主要成员变量
成员变量描述
变量类型
名称
汉诺塔对象
HannoiTower
tower
塔名数组
Char[]
TowerName
盘子数目
int
盘子数目
p
float
盘子从上到下缩小的比例
盘子大小
Int
盘宽,盘高
自动演示线程
Thread
Thread
file初级,file高级
File
初级高级排行榜记录
file1,file2
File
规则帮助文本
自动演示文字显示搬运过程
TextArea
信息条
背景音乐
Music
music
菜单条
JMenuBar
bar
菜单
JMenu
fileMenu1,fileMenu2,fileMenu3
菜单项
JMenuItem
开始游戏,重新开始,自动演示,英雄榜,退出,背景音乐,帮助主题,关于汉诺塔;
显示时间
JTextField
显示时间
(2)方法见表6
表6类Tower主要方法
名称
功能
备注
Tower
创建窗口
构造方法
run
线程方法
actionPerformed
处理ActionEvent事件
接口方法
(3)源代码见文件Tower.java
2.类HannoiTower
(1)该类用到的主要成员变量见表7
表7类HannoiTower主要成员变量
成员变量描述
变量类型
变量名
位置
int
X,Y
p
float
盘子从上到下缩小的比例
搬运坐标
int
Shartx,Starty,Starti
盘子数目
int
盘子数目
塔名
char
Towername[]
时间
int
spendtime
塔点
TowerPoint
point[]
移动状态
boolean
move
盘子
Disk
盘子[]
显示移动信息
TextArea
信息条
用来计时
Time
计时
计时器是否启动
boolean
计时器是否启动
(2)方法见表8
表8类HannoiTower主要方法
名称
功能
paintComponent
绘制主要组件
mousePressed
处理鼠标托盘子事件
mouseMoved
处理鼠标移动事件
mouseDragged
处理鼠标拖动事件
mouseReleased
处理鼠标释放事件
mouseEntered
处理鼠标进入容器事件
mouseExited
处理鼠标离开事件
mouseClicked
处理单击鼠标事件
actionPerformed
处理ActionEvent事件
自动演示搬盘子
自动演示搬盘子
在塔中获取最上面盘子
在塔中获取最上面盘子
在塔中获取最上面盘子的上方位置
在塔中获取最上面盘子的上方位置
在塔中获取最上面盘子的位置
在塔中获取最上面盘子的位置
(3)源代码见文件HannoiTower.java
3.类TowerPoint
(1)该类用到的主要成员变量见表9
表9类TowerPoint主要成员变量
成员变量描述
变量类型
变量名
位置
Int
X,Y
查看是否有盘子
boolean
有盘子
创建盘子
Disk
盘子
创建塔
HannoiTower
con
(2)方法见表10
表10类TowerPoint主要方法
名称
功能
是否有盘子
返回“有盘子”变量的状态
set有盘子
设置有盘子
getX
得到盘子的横坐标
getY
得到盘子的纵坐标
放置盘子
将盘子放到塔点上
获取盘子
获取盘子
(3)源代码见文件TowerPoint.java
4.类Disk
(1)该类用到的主要成员变量见表11
表11类Disk主要成员变量
成员变量描述
变量类型
变量名
数目
int
number
上方有无盘子
boolean
上方有盘
(2)方法见表12
表12类Disk主要方法
名称
功能
get上方有盘
得到“上方有盘”
set上方有盘
设置“上方有盘”
getNumber
得到盘子号
(3)源代码见文件Disk.java
5.类Time
(1)该类用到的主要成员变量见表13
表13类Time主要成员变量
成员变量描述
变量类型
变量名
时间
int
time
计时器
javax.swing.Timer
计时器
显示时间
JTextField
显示时间
计时器是否启动
boolean
计时器是否启动
(2)方法见表14
表14类Time主要方法
名称
功能
actionPerformed
处理ActionEvent事件
begin
设置开始计时
rebegin
设置重新开始计时
pause
设置停止计时
clear
设置计时清零且不显示
(3)源代码见文件Time.java
6.类Music
(1)该类用到的主要成员变量见表15
表15类Music主要成员变量
成员变量描述
变量类型
变量名
线程
Thread
thread
音频对象
AudioClip
clip
按钮
Button
buttonPlay,buttonLoop,buttonStop
选择框
Choice
choice
面板
Panel
p1,p2
盒式容器
Box
baseBox,boxV1,boxV2
标签
Label
标签1,标签2
(2)方法见表16
表16类Music主要方法
名称
功能
Music
创建背景音乐对话框
run
启动线程
actionPerformed
处理ActionEvent事件
(3)源代码见文件Music.java
7.类People
(1)该类用到的主要成员变量见表17
表17类People主要成员变量
成员变量描述
变量类型
变量名
测试者姓名
String
name
测试所用时间
int
time
(2)方法见表18
表18类People主要方法
名称
功能
People
获取测试者姓名
getTime
获取测试所用时间
(3)源代码见文件People.java
8.类Record
(1)该类用到的主要成员变量见表19
表19类Record主要成员变量
变量类型
变量名
功能
int
time
记录游戏所用时间
int
n
判断级别
JTextFile
yourName
记录测试者的名字
File
gradeFile
存放成绩的文件
JButton
确定,取消
是否保存成绩的按钮
(2)方法见表20
表20类Record主要方法
名称
功能
Record
创建保存成绩窗口
setTime
设置时间
setFile
设置文件
actionPerformed
处理ActionEvent事件
(3)源代码见文件Record.java
9.类ShowRecord
(1)该类用到的主要成员变量见表21
表21类ShowRecord主要成员变量
变量类型
变量名
功能
File
gradeFile
存放成绩的文件
JButton
确定,清除
按钮
JTextArea
Show
显示成绩的区域
(2)方法见表22
表22类ShowRecord主要方法
名称
功能
ShowRecord
创建显示成绩窗口
actionPerformed
处理ActionEvent事件
(3)源代码见文件ShowRecord.java
10.类Help
(1)该类用到的主要成员变量见表25
表25类Help主要成员变量
变量类型
变量名
功能
TextArea
text
存放帮助主题的文件
FileReader
f
帮助主题的文本文档
(2)方法见表26
表26类Help主要方法
名称
功能
Help
创建帮助窗口
三、运行效果
1、将10个java文件打包保存到同一个文件夹中,并且分别编译生成相应的字节码文件。
然后用java解释器如下运行主类:
源代码javaTower
1系统主界面
效果如图3-1所示:
图2-1启动画面
此时游戏是隐藏着的,点击菜单栏的“开始游戏”->“开始”开始HannoiTower游戏。
2、hannoita录入界面
点击“开始游戏”->“开始”之后进入游戏状态,同时下边的计时器开始计时。
在这个界面下可以看到,盘子是以按钮形式存在的,有一个信息条,显示时间条和一个菜单条。
玩家可以点击游戏开始玩游戏,可以看软件自动演示,可以查看英雄榜的情况;如果嫌游戏单调,还可以听听软件自带的歌曲;如果不知道怎么玩游戏,可以点击帮助查看游戏规则。
效果如图3-2所示:
图2-2游戏界面及个功能菜单
点击盘子时,所选的盘子会变成蓝色
3、在“开始游戏”菜单下可以选择游戏的级别,选择“级别”->“初级”是5个盘子,选择“级别”->高级是6个盘子。
默认是初级,5个盘子。
效果如图3-3所示:
图2-3选择游戏的级别
4、玩家点击“开始游戏”->“自动演示”,它将自动搬运盘子,同时信息条同步显示搬运信息。
效果如图2-4所示:
图2-4自动演示
5当玩家把所有的盘子都搬到c塔时,玩家成功过关软件会自动停止计时,并且弹出记录榜对话框,玩家输入姓名,软件记录下玩家的姓名和游戏所用时间。
效果如图2-5所示:
图2-5记录榜
6、玩家点击菜单栏“排行榜”->“初级榜”弹出初级排行榜对话框,再点击“显示”,显示出初级排行榜,点击“清除”清除排行榜记录。
效果如图2-6所示:
图2-6初级排行榜
高级排行榜同理,点击“排行榜”->“高级榜”显示高级排行榜。
7、点击“设置”->“背景音乐”,玩家可以选择自己喜欢的歌曲,然后点播放进行欣赏;如果玩家喜欢听某一首歌,可以点击循环按钮,反复收听同一首歌曲;也可以点击停止按钮暂停播放。
效果如图4所示:
图2-7播放器
8、点击“设置”->“背景色”可以改变背景染色,有白、绿、黄三种颜色可供选择。
效果如图2-8所示:
图2-8改变背景色
9、如果玩家不会玩汉诺塔这款游戏,可以点击帮助中的帮助主题查看游戏规则。
如果向了解关于制作的信息,就点击关于HannoiTower。
效果如图2-9和图2-10所示:
图2-9规则
图2-10关于HannoiTower