汉诺塔演示程序实验报告.doc_第1页
汉诺塔演示程序实验报告.doc_第2页
汉诺塔演示程序实验报告.doc_第3页
汉诺塔演示程序实验报告.doc_第4页
汉诺塔演示程序实验报告.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

课 程 设 计 报 告课程名称: 高级语言课程设计 课程代码: 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小组分工情况1.课程设计目的随着社会的进步我们用来娱乐的游戏世界也越来越丰富,越来越复杂。本程序的汉诺塔游戏不但包括了游戏最基本的功能,而且还能培养用户的逻辑思维能力,本游戏实现的是一个自动演示搬移汉诺塔的功能,此功能能够帮助初次接触此游戏的用户了解此游戏的玩法。2.课程设计题目描述和要求2.1 描述本程序是一个能够实现汉诺塔搬移演示功能的MFC程序2.2要求实现用图形界面,画出三个杆和最多七个矩形盘子,形成三个塔,分别为A、B、C塔,同时盘子数目可以人工进行设定,让程序自动的完成把A塔上的盘子搬移到C塔上的过程,实现自动演示。3.课程设计报告内容3.1内容概要有三个表示塔的对象,分别命名为A、B、C塔,A上有若干个(不超过七个)盘子,盘子大小不等,并按照大小顺序依次摆放在A塔上,大盘在下小盘在上,程序实现自动演示,把A塔上的盘子依次全部搬移到C塔上,要求每次只能移动一个盘子并且在任何时候不允许大盘子在小盘子之上,并且在演示过程中可以实现暂停功能。3.2功能实现设计图形用户界面的MFC程序,用户可以通过单击汉诺塔界面中提供的按钮,进行盘子数量的设置并且单击开始按钮让程序自动演示A塔上盘子移动到C塔上的过程,并且在程序运行过程中可随时单机程序界面中提供的按钮实现游戏暂停,重新开始游戏等功能。3.3程序流程图3.4程序截图1、开始游戏: 为了更好地人机交互,在执行游戏时会弹出一个欢迎的对话框。功能图:相关代码:int CMyDlg:OnCreate(LPCREATESTRUCT lpCreateStruct) if (CDialog:OnCreate(lpCreateStruct) = -1)return -1;/ TODO: Add your specialized creation code hereMessageBox(欢迎进入游戏!);return 0;2游戏主界面2.开始演示相关代码:void CMyDlg:OnButton1() if(0 = number)MessageBox(请选择盘子数!);return ;SetDishNumber(number); MoveDish(number, 0, 2);SetTimer(1015, 400, NULL); 暂停演示:相关代码:void CMyDlg:OnButton3() / TODO: Add your control notification handler code hereKillTimer(1015); MessageBox(游戏暂停);SetTimer(1015, 400, NULL);演示继续:退出游戏:弹出欢迎试对话框功能图:相关代码:void CMyDlg:OnDestroy() CDialog:OnDestroy();/ TODO: Add your message handler code hereMessageBox(游戏已关闭!);3.5 详细内部设计介绍本汉诺塔演示系统采用c+编程,使用面向对象的程序设计思想来编写的。主要采用了数据结构中的递归和栈,来实现盘子的移动。主要包含CMyDlg类,CMyDlg类中主要包含了MoveDish、Button(1、2、3等)、Create、Destroy、OnTimer、SetDishNumber、ShowBg等函数。其中MoveDish函数通过栈的递归实现了盘子的移动;多个Button函数与游戏运行界面中的相应功能按钮匹配;Create和Destroy函数是为了更好地实现人机交互而添加的游戏开始运行和退出结束时弹出的对话框;OnTimer函数负责每个盘子移动的速度以及进行中断暂停操作时的回调;SetDishNumber函数负责盘子的个数;ShowBg负责游戏界面背景图片的加载和创建临时显示器用以加载盘子。4.总结1、 对于递归的理解问题,递归中包含的if else等语句很容易打乱我们对于执行顺序的分析,使用递归千万可别忘了基准情形,不然就永远递归不出来了,所以一定要搞清递归是个怎样的过程。2、 要分清楚实参和形参,搞懂值传递的实质,只有这样才能明白one,two,three和A,B,C是怎么对应的。3、未能实现汉诺塔盘子移动速度在游戏界面的更替选择功能。4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论