汉诺塔课程设计

上传人:ba****u6 文档编号:180336872 上传时间:2023-01-05 格式:DOCX 页数:16 大小:150.91KB
返回 下载 相关 举报
汉诺塔课程设计_第1页
第1页 / 共16页
汉诺塔课程设计_第2页
第2页 / 共16页
汉诺塔课程设计_第3页
第3页 / 共16页
点击查看更多>>
资源描述
IE攀枝花学院课程设计汉诺塔演示程序设计题 目: 院(系): 年级专业: 姓 名:指导教师:二OO九年十二月十四日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目汉诺塔演示程序设计1、课程设计的目的通过完成一个完整项目,经历策划、设计、开发、测试、验收各阶段,达到:(1)巩固和实践计算机图形学课程中的理论和算法;(2)培养项目策划、架构设计、软件开发和科研设计的能力;(3)培养认真学习、积极探索的工作态度和良好的团队合作精神。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)开发工具:TC或Visual C+开发人数:1人实现内容:设计开发一个汉诺塔算法演示程序功能要求:(1)根据需求设计出图形显示界面(2)根据汉诺塔算法原理实现大小不同的盘子移动的全过程演示。3、主要参考文献1 潘云鹤,董金祥等著.计算机图形学一一原理、方法及应用.北京:高等教育出版 社,2003.122 孙家广等,计算机图形学(第三版),清华大学出版社,20043 陈元琰编著计算机图形学实用技术北京:科学出版社,20004 和青芳著计算机图形学原理及算法教程北京:清华大学出版社5 陆润民.C语言绘图教程北京:清华大学出版社,19966 陈锦昌,赵明秀.C语言计算机绘图教程.广州:华南理工大学出版社,1998.97 杨昂岳微机实用绘图方法与技巧长沙:国防科技大学出版社,1995.128 刘路放.C语言的窗口式图形界面设计一一自带汉字环境的应用软件编程西安交通大学出版社,19964、课程设计工作进度计划1、设计动员,布置任务,选题(1天)2、查阅资料,分析、讨论与设计(1天)3、编写程序,进行调试(4天)4、完成模块联调,进行测试(2天)5、成果验收,完成设计报告(2天) 指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字):接受任务时间:年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表分值得分工 作 表 现 20%O度 态 习02En试程 宀洱取 过获 通道03量口任 的 定 规 成 完 满 圆 期 按能35%匕匕 厶冃 , 技据。 和数论 识验结 知、买的 学理值 所处价 用确有 运正出 匕匕匕匕曰于 厶冃厶冃雀LdO制较隹!案 方 九 匕匕 厶冃Ld久主冃、丫 駅路 i 田思 宀女研 酗氧 跖蔡執 确等完算m怖技 附如0K匕匕厶冃 结析力 卫匕匕/7厶冃 实合析 或综分 算济 计力经 对能术O1O 力 匕匕 厶冃 的 合 宀示成果质量45%篇化 擁 质 图);outtextxy(130+cx,30+cy,num2);cy+=30;if(cy210) /*横坐标换行后另起一列*/cx+=145;cy=0;/ *纵坐标重新回到顶部开始显示下一列的演示步骤*/settextstyle(0,0,2);set fills tyle(SOLID_FILL,BLACK);/ *把原来的地方移去涂黑*/ bar(100+150*(x-97)-(33-3*numx-97.datanumx-97.top),400-20*num x-97.top-8,100+150*(x-97)+(33-3*numx-97.datanumx-97.top),400-20*numx-97.top+8);numy-97.toP+;/*入栈,目标点的top加1*/numy-97.datanumy-97.t op=numx-97.datanumx-97.t op ; /*在目 标点盘子的代号与源点盘子的代号相同*/numx-97. top-;/*出栈,原来地方的 top 减 1*/setfillstyle(S0LID_FILL,numy-97.datanumy-97. top+1);/*盘子颜色 代码是栈顶盘子代号加1*/bar(100+150*(y-97)-(33-3*numy-97.datanumy-97.top),400-20* numy-97.top-8,100+150*(y-97)+(33-3*numy-97.datanumy-97.top), 400-20*numy-97.top+8);getch( );/*自己按键盘来进行手动控制*/3.3 递归函数3.3.1 流程图根据概要设计中的实现递归函数过程的流程图设计如图3.3所示:汉诺塔演示程序设计主要是利用递归调用函数实现。函数调用 hanoi( one, two, three,n,num)表示将n个盘块从A座移到C座的过程,函数调 用move(one, three,num)是将1个盘块从A座移到C座的过程。其具体代码实现 如下: if(n=1)move(one, three,num);/*如果盘子为1,将这个盘子从塔座A移动到塔座C*/ elsehanoi(one, three, two,n-1,num);/*将塔座 A 的前 n-1 个盘子移到塔座 B*/ move(one, three,num);/*将塔座A的第n个盘子移到塔座C*/ hanoi(two,one, three,n-1,num); /*将塔座 B 的 n-1 个盘子移到塔座 C*/ 4测试与运行由需求分析可知,汉诺塔演示程序设计是在TC环境下利用递归算法实现大 小不同的盘子移动的全过程演示。本程序已调试成功并实现了其功能,当移动盘 块数为3时,其运行结果如下:图4.1盘块移动前图4.2盘块移动中图4.3盘块移动后结束语在这次课程设计中,我基本上完成了任务,通过递归调用算法实现了汉诺塔 的演示过程,以及盘块移动的具体步骤的显示 ,基本上达到了此次课程设计的要 求。但是它的不足也是显而易见的,在盘块移动的过程中用方向键移动时会一次 显示两个步骤,这给用户的实际操作带来了一定的困难,所以这是值得改进的地 方,整个程序的功能有待进一步完善,让更多的方法能得以实现。虽然在这次的课程设计中有很多的不足,但是我也有很多的收获。上网查找 资料,找到了一个基于TC对话框而实现的汉诺塔演示程序设计,于是我们就开 始研究它的算法,如何画三个塔座,如何填充盘块的颜色,如何实现盘块的移动。 再运用这些知识在 TC 中实现这次课程设计所要完成的任务。这让我不仅对 TC 开发环境有了更多的认识和了解,对其图形设备接口的知识也有了很好的掌握, 而且让我对图形学的知识有了更好的运用,拓展了对图形学的知识了解的视野, 让我的理论知识和算法有了更多的实践。作为一个大的项目,我更体会到了团队 合作精神的重要性,虽然我的设计是一个人一组的,但我深刻地认识到只有大家 一起努力地学习并研究相关的知识,才能提高做事的效率,也才能更好更快地完 成任务。所以这将在我以后的学习和生活中有很在的引导作用。在以后的学习中, 我也将加倍地学习图形学的有关知识,以同样的方法学习其他的知识,不断地丰 富自己,充实自己,提高自己的能力。参考文献1 Hearn(赫恩)Baker著.计算机图形学=Computer Graphics:C语言版.清华大学出版 社,20042 陈桂芳. 微型计算机图形学. 北京理工大学出版社. 19893 陈元琰编著计算机图形学实用技术科学出版社.20004 柳朝阳,周晓平.计算机图形学:图形的计算与显示原理 . 西安电子科技大学出版 社 .20055 陆润民.C语言绘图教程.清华大学出版社.19966 陈锦昌,赵明秀.C语言计算机绘图教程.华南理工大学出版社.1998.97 杨昂岳.微机实用绘图方法与技巧.国防科技大学出版社.1995.12
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!