汉诺塔演示程序实验报告

汉诺塔演示程序实验报告

ID:35251332

大小:221.00 KB

页数:9页

时间:2019-03-22

汉诺塔演示程序实验报告_第1页
汉诺塔演示程序实验报告_第2页
汉诺塔演示程序实验报告_第3页
汉诺塔演示程序实验报告_第4页
汉诺塔演示程序实验报告_第5页
资源描述:

《汉诺塔演示程序实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、课程设计报告课程名称:高级语言课程设计课程代码:07300561设计内容:汉诺塔演示系统专业:计算机科学与技术2012年12月16日9目录1.课程设计目的31.1内容简介31.2功能实现32.课程设计题目描述和要求32.1描述32.2要求33.课程设计报告内容33.1内容概要33.2功能实现33.3程序流程图33.4程序截图33.5详细内部设计介绍4.总结5小组分工情况91.课程设计目的随着社会的进步我们用来娱乐的游戏世界也越来越丰富,越来越复杂。本程序的汉诺塔游戏不但包括了游戏最基本的功能,而且还能培养

2、用户的逻辑思维能力,本游戏实现的是一个自动演示搬移汉诺塔的功能,此功能能够帮助初次接触此游戏的用户了解此游戏的玩法。2.课程设计题目描述和要求2.1描述本程序是一个能够实现汉诺塔搬移演示功能的MFC程序2.2要求实现用图形界面,画出三个杆和最多七个矩形盘子,形成三个塔,分别为A、B、C塔,同时盘子数目可以人工进行设定,让程序自动的完成把A塔上的盘子搬移到C塔上的过程,实现自动演示。3.课程设计报告内容3.1内容概要有三个表示塔的对象,分别命名为A、B、C塔,A上有若干个(不超过七个)盘子,盘子大小不等,并

3、按照大小顺序依次摆放在A塔上,大盘在下小盘在上,程序实现自动演示,把A塔上的盘子依次全部搬移到C塔上,要求每次只能移动一个盘子并且在任何时候不允许大盘子在小盘子之上,并且在演示过程中可以实现暂停功能。3.2功能实现设计图形用户界面的MFC程序,用户可以通过单击汉诺塔界面中提供的按钮,进行盘子数量的设置并且单击开始按钮让程序自动演示A塔上盘子移动到C塔上的过程,并且在程序运行过程中可随时单机程序界面中提供的按钮实现游戏暂停,重新开始游戏等功能。3.3程序流程图93.4程序截图1、开始游戏:为了更好地人机交互

4、,在执行游戏时会弹出一个欢迎的对话框。功能图:相关代码:intCMyDlg::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CDialog::OnCreate(lpCreateStruct)==-1)return-1;//TODO:AddyourspecializedcreationcodehereMessageBox("欢迎进入游戏!");return0;}2.游戏主界面92.开始演示相关代码:voidCMyDlg::OnButton1(){9if(0==numbe

5、r){MessageBox("请选择盘子数!");return;}SetDishNumber(number);MoveDish(number,0,2);SetTimer(1015,400,NULL);}9暂停演示:相关代码:voidCMyDlg::OnButton3(){//TODO:AddyourcontrolnotificationhandlercodehereKillTimer(1015);MessageBox("游戏暂停");9SetTimer(1015,400,NULL);}演示继续:退出游戏:

6、弹出欢迎试对话框功能图:相关代码:voidCMyDlg::OnDestroy(){CDialog::OnDestroy();//TODO:AddyourmessagehandlercodehereMessageBox("游戏已关闭!");}3.5详细内部设计介绍本汉诺塔演示系统采用c++9编程,使用面向对象的程序设计思想来编写的。主要采用了数据结构中的递归和栈,来实现盘子的移动。主要包含CMyDlg类,CMyDlg类中主要包含了MoveDish、Button(1、2、3等)、Create、Destroy、

7、OnTimer、SetDishNumber、ShowBg等函数。其中MoveDish函数通过栈的递归实现了盘子的移动;多个Button函数与游戏运行界面中的相应功能按钮匹配;Create和Destroy函数是为了更好地实现人机交互而添加的游戏开始运行和退出结束时弹出的对话框;OnTimer函数负责每个盘子移动的速度以及进行中断暂停操作时的回调;SetDishNumber函数负责盘子的个数;ShowBg负责游戏界面背景图片的加载和创建临时显示器用以加载盘子。4.总结1、        对于递归的理解问题,递

8、归中包含的ifelse等语句很容易打乱我们对于执行顺序的分析,使用递归千万可别忘了基准情形,不然就永远递归不出来了,所以一定要搞清递归是个怎样的过程。2、               要分清楚实参和形参,搞懂值传递的实质,只有这样才能明白one,two,three和A,B,C是怎么对应的。3、未能实现汉诺塔盘子移动速度在游戏界面的更替选择功能。4、对于C++中的MFC的单文档、多文档、对话框程序设计依然不知该从何处下手,希望老

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。