《动漫与网络游戏设计》课程设计报告
题目:汉诺塔游戏
院系:信息科学系
专业:软件工程
年级: 14级
成员1:学号 ******** 姓名:曾繁荣成员2:学号 ******** 姓名:陈俊杰日期: 2017年1月2号
成绩:
题目
一、作品介绍
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。
大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。
大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。
并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。
二、设计思路
1、已知有三个塔(1、
2、3)和n个从大到小的金碟子,初始状态时n个碟子按从大到小的次序从塔1的底部堆放至顶部。
2、要求把碟子都移动到塔2(按从大到小的次序从塔2的底部堆放至顶部)。
3、每次移动一个碟子。
4、任何时候、任何一个塔上都不能把大碟子放到小碟子的上面。
5、可以借助塔3。
先考虑a杆下面的盘子而非杆上最上面的盘子,于是任务变成了:
1)、将上面的N个盘子移到b杆上;
2)、将a杆上剩下的盘子移到c杆上;
3)、将b杆上的全部盘子移到c杆上。
将这个过程继续下去,就是要先完成移动n个盘子、n-1个盘子、n-2个盘子....1个盘的工作。
三、作品结构
开始
初始化界面、视窗
选择单层或多层汉诺
按键判断
选择层数进入游戏
单层(3、4、5、6)
双层(6、8、10、12)
开始游戏
判断游戏结果
Y 继续
N 退出
移动盘子数加1 关闭游戏界面退出
选择重新开始游戏按键
结束
四、设计步骤
为满足题目中盘子的移动问题,必须遵循的条件是:一次仅能移动一个盘,且不允许大盘放在小盘的上面。
设要解决的汉诺塔共有N个圆盘,对A杆上的全部N个圆盘从小到大顺序编号,最小的圆盘为1号,次之为2号,依次类推,则最下面的圆盘的编号为N。
第一步:先将问题简化。
假设A杆上只有一个圆盘,即汉诺塔只有一层N,则只要将1号盘从A杆上移到B杆上即可。
第二步:对于一个有N(N>1)个圆盘的汉诺塔,将N个圆盘分成两部分:“上面的N-1个圆盘”看成一个整体,为了解决N个圆盘的汉诺塔。
五、实现步骤
(1)将A杆上面的N-1个盘子,借助B杆,移到C杆上。
图4—1
(2)将A杆上剩余的N号盘子移到B杆上。
图4—2
(3)将C杆上的N-1个盘子,借助A杆,移到B杆上。
六、附录(程序源代码)
七、参考资料
1.《汉诺塔》---------------------------------来自百度百科
2.《汉诺塔游戏设计过程》-----------------------来自豆丁网
3.《Flash ActionScript 3.0》-----------夏敏捷郑秋生主编
八、成员分工情况
文档编写14053078 曾繁荣
游戏制作14053080 陈俊杰。