迷宫课程设计报告
迷宫课程设计报告

课程设计报告(论文)报告(论文)题目:迷宫问题哈夫曼编码/译码实现作者所在系部:计算机科学与工程系作者所在专业:网络工程所在班级:作者姓名:作者学号:指导教师姓名:完成时间:北华航天工业学院教务处制摘要在当前的市场经济体制下,企业要想提高市场的竞争力,不但要有好的产品,同时也要有好的信息查询系统,以实现企业高效率的管理及查询。
在本次课程设计中,主要解决的问题就是迷宫问题和利用创建的哈夫曼树进行编码/译码,运用C++语言编写的程序。
在迷宫问题中,可由操作者自己设计迷宫的内部构造,迷宫的入口点已被社定。
操作者自己社定迷宫出口点,当操作者输入的出口点超出迷宫本身的时候,做出提示:输入有误,请操作者再次输入迷宫出口点。
根据操作者输入的出口点求出走出迷宫的一条路径。
如果能走出迷宫,再求解最短路径。
操作者可再次设置迷宫的出口点,采取相同的操作。
该程序已经过全面的系统测试,能够很好的运行,达到了预期的效果。
哈夫曼编码/译码系统主要有五个功能模块:1:创建哈夫曼树;2:打印哈夫曼编码规则;3:规则根据编码规则进行编码,并将编码保存在D:code1file.dat文件中;4:对保存在code1file.dat文件中的二进制代码进行译码,并将译码保存在D:code2file.dat文件中;5:打印哈夫曼编码。
该程序已经过全面的系统测试,能够很好的运行,达到了预期的效果。
例如:无效数字的输入本系统的自动判断,按照不同的关键字输出结果,人性化的输入界面(包括输入提示,错误提示等等)。
在下面各章节的介绍中,你会了解到各程序的具体设计与实现,介绍中包括系统需求分析,概要设计,详细设计,调试分析以及测试记过等。
此次程序设计使我们进一步了解C++的精华之处及数据结构的一些编程思想。
C++是优秀的计算机程序设计语言,它的功能相当的强大。
C++是程序设计员必备的一种语言,本次课程设计帮助我们深入的了解了C++的精髓所在,为我们以后的学习打下了坚实的基础。
课程设计迷宫

课程设计迷宫一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握迷宫的基本概念、历史发展以及各类迷宫的解法。
技能目标要求学生能够运用所学知识解决简单的迷宫问题,培养空间想象能力和逻辑思维能力。
情感态度价值观目标在于培养学生对数学和逻辑思维的兴趣,提高学生面对挑战的勇气和自信。
通过分析课程性质、学生特点和教学要求,明确课程目标,将目标分解为具体的学习成果,以便后续的教学设计和评估。
二、教学内容根据课程目标,选择和教学内容,确保内容的科学性和系统性。
本课程的教学大纲如下:1.迷宫的基本概念:介绍迷宫的定义、分类及其特点。
2.迷宫的历史发展:介绍迷宫的起源、发展及其在各个时期的重要成果。
3.迷宫的解法:讲解基本的迷宫解法,如深度优先搜索、广度优先搜索等。
4.实践练习:提供一些实际的迷宫问题,让学生运用所学知识解决。
教学内容紧密围绕课本,符合教学实际,确保学生能够掌握迷宫的基本知识和解题技巧。
三、教学方法选择合适的教学方法,如讲授法、讨论法、案例分析法、实验法等,以激发学生的学习兴趣和主动性。
结合迷宫课程的特点,采用以下教学方法:1.讲授法:讲解迷宫的基本概念、历史发展和解法原理。
2.案例分析法:分析具体的迷宫问题,引导学生运用所学知识解决实际问题。
3.实验法:学生进行迷宫实验,培养学生的空间想象能力和逻辑思维能力。
4.讨论法:鼓励学生积极参与课堂讨论,提高学生的表达能力和团队协作能力。
通过多样化的教学方法,提高学生的学习兴趣和主动性,确保教学目标的有效实现。
四、教学资源选择和准备适当的教学资源,包括教材、参考书、多媒体资料、实验设备等。
教学资源应能够支持教学内容和教学方法的实施,丰富学生的学习体验。
本课程所需的教学资源如下:1.教材:选用权威、实用的教材,如《迷宫与逻辑思维》等。
2.参考书:提供相关的参考书籍,如《迷宫的历史与文化》等。
3.多媒体资料:制作课件、教学视频等,以直观展示迷宫的解法过程。
c课程设计迷宫

c课程设计迷宫一、教学目标本课程旨在通过学习迷宫的相关知识,让学生掌握迷宫的起源、类型和构成要素,能够分析并设计简单的迷宫,培养学生的空间想象能力和创新意识。
同时,通过迷宫游戏的活动,培养学生的团队合作精神和解决问题的能力。
此外,通过课程的学习,使学生对迷宫这一文化现象有更深入的了解,激发学生对未知领域的探索热情。
二、教学内容本课程的教学内容主要包括迷宫的起源、类型和构成要素,迷宫的设计方法和技巧,以及迷宫游戏的规则和策略。
具体包括以下几个部分:1.迷宫的起源和发展:介绍迷宫的历史背景,分析不同文化背景下的迷宫特点。
2.迷宫的类型和构成要素:解析不同类型的迷宫,如古典迷宫、现代迷宫等,以及它们的构成要素。
3.迷宫的设计方法:教授迷宫设计的基本原则和方法,引导学生进行实践操作。
4.迷宫游戏的规则和策略:介绍迷宫游戏的规则,分析游戏中的策略和技巧。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式,包括讲授法、案例分析法、实验法和讨论法等。
1.讲授法:通过讲解迷宫的基本概念、原理和设计方法,使学生掌握迷宫的相关知识。
2.案例分析法:分析经典和现代的迷宫案例,使学生更好地理解迷宫的特点和设计要点。
3.实验法:学生进行迷宫设计实践,培养学生的动手能力和创新意识。
4.讨论法:通过小组讨论,引导学生思考迷宫与人类文明、游戏策略等方面的关系。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的迷宫知识。
2.参考书:提供相关领域的参考书籍,帮助学生拓展知识面。
3.多媒体资料:制作课件、视频等多媒体资料,直观地展示迷宫的起源、类型和设计方法。
4.实验设备:准备迷宫设计所需的实验设备,如纸张、笔、剪刀等,确保学生能够进行实践操作。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面、客观、公正地评价学生的学习成果。
关于迷宫问题的课程设计

关于迷宫问题的课程设计一、课程目标知识目标:1. 学生能理解迷宫问题的基本概念,掌握迷宫的图形表示和抽象表示方法。
2. 学生能运用基本的搜索算法,如深度优先搜索和广度优先搜索,解决迷宫问题。
3. 学生能理解并运用贪心算法和启发式搜索算法在迷宫问题中的应用。
技能目标:1. 学生能够运用逻辑思维和问题分析能力,将迷宫问题转化为数学模型。
2. 学生能够编写简单的程序,实现迷宫问题的搜索算法。
3. 学生能够运用批判性思维,评价不同算法在解决迷宫问题中的优缺点。
情感态度价值观目标:1. 学生通过解决迷宫问题,培养面对复杂问题的耐心和毅力,增强解决问题的自信心。
2. 学生在团队协作中,学会倾听他人意见,提高沟通能力和团队协作能力。
3. 学生通过探索迷宫问题的多种解法,培养创新思维和开放性思维,认识到问题的多样性和复杂性。
课程性质:本课程为信息技术与数学学科交叉的实践课程,结合了算法设计与问题解决的技能。
学生特点:考虑到学生所在年级的特点,课程设计难度适中,注重培养学生的逻辑思维和问题解决能力。
教学要求:课程要求学生在理解基本概念的基础上,动手实践,通过解决实际问题,提高综合运用知识的能力。
教学过程中,注重启发式教学,引导学生主动探索和发现知识。
通过分解课程目标为具体的学习成果,使学生在完成课程后,能够达到预期的学习效果。
二、教学内容1. 迷宫问题基本概念:迷宫的图形表示与抽象表示,包括节点和边的定义,以及如何将现实问题转化为迷宫模型。
- 教材章节:第三章第二节“图的应用”2. 搜索算法:介绍深度优先搜索(DFS)和广度优先搜索(BFS)的原理与实现,通过迷宫问题进行实践操作。
- 教材章节:第二章“图的搜索算法”3. 算法分析与优化:探讨贪心算法和启发式搜索算法(如A*算法)在解决迷宫问题中的应用,分析算法效率。
- 教材章节:第四章“启发式搜索”4. 算法实践:编写程序实现迷宫问题的搜索算法,使用适当的编程工具(如Python等),让学生亲自动手解决问题。
迷宫问题求解课程设计

迷宫问题求解课程设计一、课程目标知识目标:1. 学生能理解迷宫问题的基本概念,掌握迷宫的图形表示和抽象表示方法。
2. 学生能掌握深度优先搜索、广度优先搜索等基本算法,并运用到迷宫问题求解中。
3. 学生能了解启发式搜索算法,如A*算法,并理解其在迷宫问题中的应用。
技能目标:1. 学生能够运用所学算法,独立设计并实现迷宫问题的求解程序。
2. 学生能够分析不同算法在解决迷宫问题时的优缺点,并进行比较和优化。
3. 学生能够通过小组合作,共同探讨迷宫问题的解决方案,提高团队协作和沟通能力。
情感态度价值观目标:1. 学生培养对算法和编程的兴趣,激发学习计算机科学的热情。
2. 学生通过解决实际问题,增强自信心和成就感,提高面对复杂问题的勇气和毅力。
3. 学生在团队协作中学会尊重他人、倾听意见,培养良好的合作精神和沟通能力。
分析课程性质、学生特点和教学要求:本课程为信息技术或计算机科学相关课程,旨在培养学生运用算法解决实际问题的能力。
学生处于中学高年级,具备一定的编程基础和逻辑思维能力。
教学要求注重理论与实践相结合,鼓励学生动手实践和合作探究,以实现以下具体学习成果:1. 学生能够自主设计并实现迷宫问题的求解程序。
2. 学生能够分析比较不同算法的性能,并进行优化。
3. 学生能够在团队中发挥各自优势,共同解决问题,提高沟通和协作能力。
二、教学内容1. 迷宫问题基本概念:迷宫的图形表示与抽象表示,介绍迷宫问题的定义和特点。
相关教材章节:第二章 算法基础,第三节 图的表示与应用。
2. 深度优先搜索算法:算法原理、实现步骤,以及在迷宫问题中的应用。
相关教材章节:第三章 搜索算法,第一节 深度优先搜索。
3. 广度优先搜索算法:算法原理、实现步骤,以及在迷宫问题中的应用。
相关教材章节:第三章 搜索算法,第二节 广度优先搜索。
4. 启发式搜索算法:A*算法原理、实现步骤,以及在迷宫问题中的应用。
相关教材章节:第三章 搜索算法,第四节 启发式搜索。
迷宫c课程设计

迷宫c 课程设计一、课程目标知识目标:1. 学生能理解并掌握迷宫问题的基本概念,包括迷宫的构成、路径搜索等。
2. 学生能够运用所学知识,设计并实现一个简单的迷宫游戏。
3. 学生了解并掌握基本的算法思想,如深度优先搜索、广度优先搜索等。
技能目标:1. 学生通过迷宫游戏的设计与实现,培养逻辑思维和问题解决能力。
2. 学生能够运用编程语言实现迷宫的构建和路径搜索算法,提高编程能力。
3. 学生学会合作与沟通,通过团队协作完成迷宫游戏的开发。
情感态度价值观目标:1. 学生培养对编程和算法的兴趣,激发学习主动性和创新精神。
2. 学生在合作过程中,学会尊重他人、理解他人,培养团队协作精神。
3. 学生通过解决实际问题,体会科技对生活的改变,增强社会责任感和使命感。
课程性质:本课程为信息技术学科,以项目式学习为主,注重实践性和综合性。
学生特点:六年级学生,具备一定的编程基础和逻辑思维能力,对新鲜事物充满好奇心。
教学要求:教师应引导学生主动探索,鼓励学生尝试不同的解决方案,关注学生个体差异,提高学生的实践能力。
同时,注重培养学生团队协作精神,提升学生的综合素质。
通过本课程的学习,使学生能够将所学知识应用于实际问题的解决,达到学以致用的目的。
二、教学内容本课程教学内容主要包括以下几部分:1. 迷宫基础知识:- 迷宫的构成要素和类型- 迷宫问题的数学模型2. 编程语言基础:- 控制结构:顺序、选择、循环- 数据结构:数组、列表- 函数与模块:定义、调用、参数传递3. 迷宫路径搜索算法:- 深度优先搜索(DFS)- 广度优先搜索(BFS)- A*搜索算法4. 项目实践:- 迷宫游戏设计:需求分析、界面设计、功能模块划分- 编程实现:编写代码,构建迷宫、角色、路径搜索等功能- 测试与优化:测试迷宫游戏,发现问题并进行优化5. 团队协作与沟通:- 项目分组与分工- 协作工具的使用:如Git、Trello等- 汇报与展示:项目成果分享,总结与反思教学内容与教材关联性:本课程教学内容与教材《信息技术》六年级下册相关章节紧密关联,涵盖了教材中关于编程、算法、项目实践等方面的内容。
幼儿人体迷宫实验报告(3篇)

第1篇一、实验背景迷宫游戏作为一种寓教于乐的活动,对于幼儿的认知发展、空间感知能力、解决问题的能力等方面都有积极的促进作用。
为了探究迷宫游戏对幼儿身体协调性、方向感及逻辑思维能力的培养效果,我们开展了幼儿人体迷宫实验。
二、实验目的1. 了解幼儿在迷宫游戏中的行为表现,分析幼儿的身体协调性、方向感及逻辑思维能力的发展水平。
2. 探究迷宫游戏对幼儿身体协调性、方向感及逻辑思维能力的培养效果。
3. 为幼儿教育工作者提供有益的参考,促进幼儿身心健康发展。
三、实验方法1. 实验对象:选取30名3-6岁的幼儿作为实验对象,其中男女各半。
2. 实验材料:迷宫地图、计时器、观察记录表。
3. 实验步骤:(1)将幼儿分成两组,每组15人。
(2)对实验组进行迷宫游戏训练,每次训练时间为30分钟,每周训练3次,持续4周。
(3)对对照组进行常规游戏活动,每周3次,每次30分钟,持续4周。
(4)在实验前后对两组幼儿进行身体协调性、方向感及逻辑思维能力测试。
(5)观察记录幼儿在迷宫游戏中的行为表现,包括游戏时间、完成情况、情绪变化等。
四、实验结果与分析1. 实验组幼儿在迷宫游戏训练后,身体协调性、方向感及逻辑思维能力均有显著提高。
2. 对照组幼儿在常规游戏活动后,身体协调性、方向感及逻辑思维能力无明显变化。
3. 实验组幼儿在迷宫游戏中的行为表现如下:(1)游戏时间:实验组幼儿在迷宫游戏中的平均游戏时间为20分钟,对照组为15分钟。
(2)完成情况:实验组幼儿在迷宫游戏中平均完成3-4个迷宫,对照组为2-3个迷宫。
(3)情绪变化:实验组幼儿在迷宫游戏过程中情绪稳定,积极参与;对照组幼儿在常规游戏活动中情绪波动较大。
五、结论1. 迷宫游戏对幼儿身体协调性、方向感及逻辑思维能力具有显著的培养效果。
2. 迷宫游戏可以提高幼儿在游戏过程中的专注力、观察力及解决问题能力。
3. 教育工作者可以将迷宫游戏纳入幼儿教育课程,丰富幼儿的课余生活,促进幼儿身心健康发展。
c课程设计报告迷宫

c 课程设计报告迷宫一、教学目标本课程的教学目标是让学生掌握迷宫问题的基本概念、算法和编程技巧。
通过本课程的学习,学生应能理解迷宫问题的数学模型,掌握常用的迷宫算法,并能够运用编程语言实现迷宫的求解。
此外,学生还应培养解决问题的能力和创新思维,提高对计算机科学和编程的兴趣。
具体来说,知识目标包括:1.了解迷宫问题的背景和应用场景。
2.掌握迷宫问题的数学模型和基本概念。
3.熟悉常用的迷宫算法及其特点。
4.理解编程语言在解决迷宫问题中的应用。
技能目标包括:1.能够运用迷宫算法求解简单迷宫问题。
2.能够运用编程语言实现迷宫算法的求解。
3.能够对迷宫算法进行优化和改进。
情感态度价值观目标包括:1.培养学生对计算机科学和编程的兴趣。
2.培养学生解决问题的能力和创新思维。
3.培养学生的团队合作意识和沟通能力。
二、教学内容本课程的教学内容主要包括迷宫问题的基本概念、算法和编程技巧。
具体内容包括:1.迷宫问题的背景和应用场景。
2.迷宫问题的数学模型和基本概念。
3.常用的迷宫算法及其特点。
4.编程语言在解决迷宫问题中的应用。
教学大纲安排如下:第一课时:介绍迷宫问题的背景和应用场景,引入迷宫问题的数学模型和基本概念。
第二课时:介绍常用的迷宫算法及其特点,引导学生理解编程语言在解决迷宫问题中的应用。
第三课时:通过案例分析,让学生运用迷宫算法求解简单迷宫问题,培养学生的编程能力。
第四课时:引导学生对迷宫算法进行优化和改进,提高学生的解决问题的能力。
第五课时:进行课程总结和回顾,让学生展示自己的迷宫求解成果,进行交流和评价。
三、教学方法本课程的教学方法采用讲授法、讨论法和实验法相结合的方式。
通过讲授法,向学生传授迷宫问题的基本概念、算法和编程技巧;通过讨论法,引导学生进行思考和交流,培养学生的创新思维;通过实验法,让学生动手实践,培养学生的编程能力和解决问题的能力。
在教学过程中,教师应根据学生的实际情况,灵活运用不同的教学方法,以激发学生的学习兴趣和主动性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录引言 (1)一.设计目的 (2)二.问题描述 (2)三.需求分析 (3)四.设计 (3)五.测试分析 (5)六.完整代码 (10)七.设计体会与小结 (17)八、成绩: (17)引言数据结构的学习过程,是进行复杂程序设计的训练过程,是算法构造性思维方法的训练过程,技能培养的过程不亚于知识传授。
数据结构课程教学的重要内容和主要难点在于让我们理解、习惯算法构造性思维方法。
培养我们的数据抽象能力、算法设计能力以及创造性思维方法,才能够举一反三、触类旁通,从而达到应用知识解决复杂问题的目的。
数据结构作为专业基础课程,可以对去年学习的c语言知识进行总结提高,为后续专业基础课程提供基础,它承上启下,贯通始终,是计算机科学与技术人才素质框架中的脊梁,对我们能力的培养至关重要。
通过对数据结构的学习,我们能够以问题求解方法、程序设计方法及一些典型的数据结构算法为对象,学会分析数据对象特征,掌握数理算法,初步掌握算法的时间、空间复杂分析基础,培养良好的程序设计风格以及进行复杂程序设计的技能。
一.设计目的这次课程设计,我们的题目是迷宫求解。
迷宫求解是数据结构中的经典问题,我期望达到的目的有以下4个。
1.巩固书本知识,对书上的知识能更透彻的了解.通过自己设计程序积累调试数据结构的经验,培养我们的编程能力。
巩固我们所学的数据结构知识,消化课堂所讲解的内容。
也是对所学知识的整理,将原来在我们脑中比较混乱的课程设计重新梳理。
2.通过课程设计能更好的掌握迷宫求解中的设计思路,为以后灵活运用奠定基础。
3.能够独立的完成简单程序的设计以及完成一份较为满意的程序设计报告。
4.通过课程设计达到增强巩固数据结构知识的目的,使知识全面化、系统化。
二.问题描述迷宫问题来源于古希腊的神话,而后被人们演化为一个游戏。
以一个N*M的方正表示迷宫,0、1分别表示迷宫中的通路和障碍。
设计一个程序对任意设定的迷宫求出一条从入口的通道,或者的出没有通路的结论。
假设一个老鼠从起点〈0.0〉沿X轴的八个方向逆时针旋转,老鼠每走到一处,总让它按东,东南,南,西南,西,西北,北,东北8个方向顺序试探下一个位置,如果某方向可以通过,则前进一步,在新位置上继续进行搜索;如果8个方向都走不通或曾经到达过则退回一步,都要进行判断:若前进到了出口处,则说明不存在通路。
如此重复直至走到终于,即为成功。
三.需求分析通过主函数调用栈和递归的算法,来创作迷宫游戏或者解决迷宫问题。
1.迷宫用MG类型的二维数组M[7][7]矩阵来表示,其中每一个格用一个MG结构体表示,包括以下元素:是否是障碍物,0表示通过,1表示障碍物,mx(横坐标),my(纵坐标),迷宫的暂时位置为固定。
2.程序的输出信息主要有:(1).打印的迷宫模块(2).小老鼠所走的路径(3).汉诺塔分步搬迁表示过程。
3.程序的功能包括:(1).对迷宫加密(2).显示主菜单函数(3)保存恢复原函数信息(4)用递归和栈显示老鼠所走路径(5)用汉诺塔是实现搬迁(6)用清屏函数来清屏四.设计概要设计1.定义栈的抽象数据类型ADT Stack{数据元素:可以是任意类型的数据,但必须属于同一个数据对象。
结论关系:栈中数据元素之间是线性关系。
基本操作:判断栈是否为空。
若栈为空推出循环。
否则让该元素入栈}ADT Stack2.定义数组抽象数据类型ADT Stack{数据对象:D={a j1 j2 ……..jn} n>0.称为数组的维数,ji是数组的第i维下标,1<=ji<=bi,bi为数组第i维的长度,Aj1j2……….jn属于ElementSet}数据关系:R={R1,R2,…Rn}Ri={<aj1…ji…ji,aj1…ji+1…jn> | 1<=jk<=bk,1<=k<=n且k!=I,1<=ji<+bi-1,aj1…ji…jn,aj1…ji+1…jn属于D,i=1,…,n}3.基本操作1.InitArray(A,n,boundl,…,boundn):若维数n和各维的长度合法,则构造相应的数组A,并返回TRUE。
2.GetValue(A,e,index1,…,indexn):若下标合法,则用e返回数组A中由index1,…,indexn所指的元素的值.程序结构可以化分成以下几个模块:1-----主函数main()—主函数调用其它子函数2-----指令函数void login()—用来设置迷宫的密码3-----菜单函数select_menu()—显示菜单界面4.----递归函数void digui(int maze[N][M], int x,int y, int v, int xx,int yy)—用递归函数实现迷宫走向5-----栈函数void stack(int maze[N][M], int x,int y, int xx,int yy)—用栈实现迷宫走向6-----汉诺塔void hanio(int q, int a, int b, int c)—hanio 实现搬迁7-----保存函数void save( int maze[][M],int backup[][M])保存初始值8-----恢复函数void load (int maze[][M],int backup[][M])恢复程序功能,继续执行程序9-----清屏函数 system("cls")—清除执行过的界面各函数之间的调用关系如下:主函数1依次调用上面的2、3、4、5、6、7、8、9,实现迷宫行走图1 函数调用关系图五.测试分析首先二个图是错误的运行结果,图2 登陆错误时界面的显示图3 用栈实现的结果选择2时,是系统用栈解决了迷宫问题。
如图3所示。
如果接着输入数字1就是下面的结果。
图4 用栈和递归实现后的结果图5 用递归实现图6 汉诺塔实现的结果清屏函数加入依次输入1、2、3,上图是输入3后的结果,按回车键控制输出汉诺塔的搬迁次数。
六.完整代码#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<string.h>#include<process.h>#include<dos.h>#include<math.h>#define N 7#define M 7#define Q 5int r=2;int movex[9]={0,1,1,0,-1,-1,-1,0,1};//用结构体表示位置int movey[9]={0,0,1,1,1,0,-1,-1,-1};int maze[N][M]={//按照用户输入的二维数组(0或1)设置迷宫maze的初值,包括加上边缘一圈的值{1,1,1,1,1,1,1},{1,0,1,0,1,0,1},{1,1,0,0,1,1,1},{1,0,0,1,0,1,1},{1,1,1,0,1,1,1},{1,0,1,0,0,1,1},{1,1,1,1,1,1,1}};int backup [N] [M];void save( int maze[][M],int backup[][M])//保存函数{int i, j;for(i=0;i<N;i++){for(j=0;j<M;j++)backup[i][j]=maze[i][j];}}void load (int maze[][M],int backup[][M])//恢复函数{int i,j;for(i=0;i<N;i++){for(j=0;j<M;j++)maze[i][j]=backup[i][j];}}int select_menu()//菜单函数{ int i,n;for(i=1;i<=60;i++)printf("&");printf("\n");printf("\n\t&&===============迷宫游戏================&&\n");printf("\n\t&& 1--->用递归实现&&\n ");printf("\n\t&& 2--->用栈实现&&\n ");printf("\n\t&& 3---> 汉诺塔&&\n ");printf("\n\t&& 4---〉退出&&\n ");printf("\n\t&& &&\n");printf("\n\t&& 设计者:杨瑞娇杜春雨赵询黄锦&&\n");printf("\n\t&& (第十三组)&&\n");printf("\n\t&& 团结协作实现共赢&&\n");for(i=1;i<=60;i++)printf("&");printf("\n");printf("\n**游戏规则:小老鼠从入口出发,顺某一方向向前探索,若能走通则继续往前走;否则沿原路退回,换一个方向再继续探索,直至所有可能的通路都探索到为止。
如此重复直至到达出口,闯关成功。
\n");printf("\n\t请您选择1-4:\n");scanf("%d", &n);getchar();return n;}int step;void hanio(int q, int a, int b, int c)//汉诺塔函数{ if(q>=1){hanio( q-1, a,c,b);printf(" 现在是第%d 搬迁从%c---->到%c\n",++step, a+64, c+64);system("pause");//起暂停作用hanio(q-1, b,a, c);}}void print( int a[N][M])//打印设置迷宫的模块{ int i, j;for(i=0; i<N; i++){for(j=0; j<M; j++)printf("%3d", a[i][j]);printf("\n");}}void digui(int maze[N][M], int x,int y, int v, int xx,int yy)//递归函数{int x1,y1;maze[x][y]=r++;//记录路径长度for(v=1; v<=8; v++)//v为老鼠所走路径的方向,1-8表示八个方向{x1=x+movex[v];y1=y+movey[v];//随v的变化,更新老鼠所处位置if(x1==xx&&y1==yy){maze[x1][y1]=r++;//记录路径长度print(maze);//调用print函数//getchar();return;}//当老鼠走到出口时,打印elseif(maze[x1][y1]==0) //如果成立,说明这是一个通路digui(maze,x1,y1,1,xx,yy); //调用go函数}maze[x][y]=0;//通路}void stack(int maze[N][M], int x,int y, int xx,int yy)//栈函数{ int i;int x1,y1,x2,y2,v,top=1;struct{int x;int y;int v;} s[N*M];//定义结构体s[top].x=x;s[top].y=y;//x、y入栈s[top].v=0;//路径长度附初值maze[x][y]=2;while(top!=0)//判断栈是否为空,若非空,则出栈{x1=s[top].x;y1=s[top].y;v=s[top].v+1;top--;while(v<=8){x2=x1+movex[v];y2=y1+movey[v];//随v的变化,更新老鼠所处位置if(x2==xx&&y2==yy)//当老鼠走到出口时,输出出老鼠所走路径{for(i=1; i<=top; i++)printf("(%d,%d)\n", s[i].x,s[i].y);printf("(%d,%d)\n",xx,yy);getchar();}elseif(maze[x2][y2]==0) //如果成立,说明这是一个通路{top++;s[top].x=x1;s[top].y=y1;s[top].v=v;x1=x2; y1=y2;v=0;maze[x1][y1]=2;}v++;//控制路径方向,当v>8时退出循环}}}void login()//设置秘密{ char pass[6];int i;for(i=1;i<=3; i++)//三次机会,若三次密码都未输对,则不能进入界面{printf("\n\n\n\n\n\t\t\tplease input password:\n");gets(pass);if(strcmp(pass,"123456")==0)break;//若输进123456,则退出循环,进入主界面}if(i<=3){printf("\n ********weclome you to here********\n");//若输密码次数<=3,则出现括号内的字符printf("\n");}else{printf("\n\tno use\n");//输出no useexit(0);//退出本层循环}}void main(){ int x0=1, y0=1,xx=5,yy=4;int i=1,j=0;login();//调用login函数for(;;)//循环调出主菜单{switch(select_menu())//调用select_menu()函数{case 1:save(maze,backup);digui(maze,x0,y0,1,xx,yy);load(maze,backup);//调用digui函数system("cls");//清屏函数break;case 2: save(maze,backup); stack(maze,x0,y0,xx,yy);load(maze,backup);//调用stack函数system("cls");//清屏函数break;case 3: hanio(Q,1,2,3);//调用汉诺塔函数system("cls");//清屏函数break;case 4: exit(0);//退出循环system("cls");//清屏函数} system("cls");//清屏函数}}七.设计体会与小结八、成绩:。