- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
XX 学生课程设计 题 目: 汉诺塔演示程序 学生: XXX
XXXXXXX 学生课程设计(论文) 题 目: 汉诺塔演示程序 学生姓名: XXX 学 号: XXX 所在院(系): XXX 专 业: XXX 班 级: XX 指 导 教 师: XX 职称: XX 2007年 7 月 13 日 摘 要move()函数,hanoi()函数,?bar()函数,?setfillstyle()函数通过TC来实现将A塔上依次放着的从大到小(从下向上叠放)的一叠盘子,移动到C塔上。 关键词 计算机图形学, 区域填充,汉诺塔演示程序 目 录 摘 要 I 1 绪论 2 1.1课题背景 2 1.2课程设计目的 2 1.3课程设计内容 3 1.4设计要求 3 1.5课程设计设备 3 2 需求分析 4 3 概要设计 5 3.1算法思路 5 3.2算法数据结构显示图 6 4详细设计 7 4.1设计思想 7 4.2实现代码 7 4.2.1移动过程代码设计模块 7 4.2.2递归过程代码设计模块 8 4.2.3 main()主函数代码设计模块 9 5 程序调试与结论 10 心得体会 12 参考资料 13 1 绪论 1.1课题背景 汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。 本课题是设计开发一个汉诺塔算法演示程序。具体设计内容是设计3个柱,在其中一柱(设为A塔)上从下向上依次放着从大到小的一叠盘子,要把该柱(A 塔)上的盘子全部搬到指定的柱上(C塔),在搬运过程中,可以利用另外一根柱子(B 塔)来协助搬移。同时需要建立图形所描述的场景2 需求分析 自从计算机图形学的研究从美国麻省理工学院起源以来,发展极为迅速,它的应用范围、领域也日趋广泛。如计算机辅助设计与制造、计算机动画与艺术、科学计算可视化、计算机模拟与仿真、游戏设计等都离不开计算机图形学中的理论知识的应用,而这些应用无疑就是图形学理论中的一些几何图形的算法生成、几何图形的填充、图形的裁剪、图形的几何变换,以及加上一些其他图形处理显示技术的结合。汉诺塔算法演示程序就是图形学知识的一个小小应用,它运用到了矩形算法,区域填充算法,以及图形显示,同时还结合了数据结构、C语言的运用。可以说汉诺塔算法演示程就是运用图形学生成一个汉诺塔游戏。 3 概要设计 3.1算法思路 本题是典型的递归程序设计题,设要解决的的汉诺塔共有N个圆盘,对A上的全部N个圆盘从小到大顺序编号,最小的圆盘为1号,次之为2号,依次类推,则最下面的圆盘的编号为N。①将A上面的N-1个盘子,借助B,移到C上; 汉诺塔算法图示②将A上剩余的N号盘子移到B上; 汉诺塔算法图示③将C上的N-1个盘子,借助A,移到B上。 汉诺塔算法图示 图 3.2 结构模型图 4详细设计 4.1设计思想 用递归算法来做汉诺塔游戏的程序,用a表示被移动盘片所在的针,c表示目的针,b表示过度针。具体的步骤为:①?将 n-1个盘从a经过c移动到b。②将n个盘移动到c。③?将n-1个盘从b经过a移动c。这样我们就移动n个盘的变成了移动了n-1个盘的问题即移动n-1个盘的问题可用移动n个盘的问题递归描述。void hanoi()递归函数模块来实现。 动画的实现:先定义空间,即每一个上都有n个空间来画盘。每一个盘都有相应的代表的值,我用数组data[]来保存每一根针上的盘的值。当针上相应位置上有盘时,相应盘的值为(第几号),否则为0。盘的移动反映在值上即为数的传递。例如当第针上的3号移到针,这时3号盘的当前位置上的值付为0,而针的最上面的位置的值付为3。这样便实现了盘的值的移动。当用图形表示时,移动即可表述为,在新的位置画一个盘,同时在旧的位置用背景色画一个盘从而实现盘的动画移动。4.2实现代码 本演示程序主要运用move()函数来实现移动的具体过程hanoi()实现递归?bar()函数实现几何矩形,?setfillstyle()实现对图形的填充。 4.2.1移动过程代码设计模块 void move(char x,char y,struct H num[3]) /*移动函数*/ {? ?int i;
您可能关注的文档
最近下载
- 13J602-3 不锈钢门窗图集.docx
- 2025四川成都城投置地集团有限公司所属公司招聘21人笔试模拟试题及答案解析.docx VIP
- 广州数控gsk980td操作步骤(刀补对刀).pdf VIP
- 粤教粤科版(2024)小学科学一年级上册《认识常见的材料》教案.docx VIP
- 3.5制作简易电子班牌教学设计-青岛版(2024)初中信息技术第五册教学设计.docx VIP
- 小儿肺炎护理论文.docx VIP
- 众创空间管理制度.docx
- 2025四川成都城投置地集团有限公司所属公司招聘21人笔试参考题库附带答案详解.pdf
- 富菱达交流变频调速电梯电气原理图.pdf VIP
- 入团志愿书内页电子版 .pdf VIP
文档评论(0)