基于C语言的迷宫程序.doc
18页问题描述:本实验要求使用C语言编写一迷宫程序,使其能完成探索路径并输出探索结果的要求根本要求: 本实验通过构建系统分析与设计:一般的迷宫为二维平面图形,将迷宫的左上角作入口,右下角作出口,求出从入口点到出口点的一条通路,作为线性结构的典型应用,大多用非递归方法实现,输出用0代表通路,1代表墙壁程序采用了一个美观逼真的迷宫图,而且是随机生成,迷宫的大小为N×N,N预定义为常数,修改N的值可以改变迷宫的大小〔只要不超过屏幕显示范围〕,而程序不必做修改用白色表示可走的路,蓝色表示墙壁不可以通过程序还设计了两种运行方式:一种是由系统自动运行探索,用递归方法实现;一种是由人工操作探索通路系统运行首先出现提示字符串“Please select hand(1) else auto〞,询问是选择人工探索还是系统自动探索,当用户输入字符1按回车键后出现一个迷宫图,红色矩形块〔表示探索物〕出现在左上角,这是可以代表4个方向的字符选择通路,遇到墙壁不能通行,按回车键结束探索,如果这时探索物移动到右下角出口,那么显示找到通路信息,否那么显示没找到通路信息在提示信息后,如果输入的字符不是1,那么系统自动查找通路,如果没有找到通路,那么显示没有找到通路信息。
如果找到通路,那么用红色标记走过的路径程序首先要考虑迷宫的表示,这是一个二维关系图,典型的存贮储方式是选择二维数组,数组元素的值只有两种状态,所以取值为0或1,0表示通路,1表示墙壁,这里取名为map图形的显示就可以根据数组元素的值来确定,如果是人工探索,那么根据按键来确定探索物的位置坐标,利用循环语句即可实现,如果是系统自动探索,并且在4个方向进行递归算法,即可实现寻找路径 流程图关闭图像Close()输出结果Result()手动探索PeopleFind()自动探索FindWay()设计功能的分析与实现数据结构的设计功能模块的函数设计1、main()主函数首先确定是人工还是系统自动探索,通过输入字符选定选定后调用图形初始化函数,接着调用迷宫生成函数及迷宫显示函数然后根据输入的字符调用人工探索函数或自动探索函数,探索完毕进行结果处理,最后关闭图形系统,程序结束2、Init()初始化函数由于迷宫图是在图形方式下显示的,所以要进行图形初始化3、MapRand()迷宫生成函数用数组map表示一个迷宫,要随机生成迷宫,数组元素的值利用随机函数生成0或1的数4、PrMap()迷宫显示函数根据数组map的值输出迷宫图,利用函数setfillstyle()设置图形实体填充样式bar〔〕函数输出矩形块。
数组元素的下标为矩形块的中心坐标,利用两重循环语句可以完成迷宫图的显示5、FindWay()系统自动从下标〔1,1〕开始探索,依次按照右下、下、右、右上、左、左下、左上的顺序前进,假设该方向上的值为0,那么前进一步6、PeopleFind〔〕人工探索首先输出迷宫图以及人工控制操作图示,红色探索出现在左上角,采用人工控制8个方向的移动,由于是8个方向,用光标键只能控制4个方向,为了统一采用了临近的8个字符,Q,W,E,A,D,Z,X,C代表8个方向,按了字符后,对应方向不是墙壁,可以将红色探索物移到相应的位置,按回车表示结果人工操作如果此时map数组元素的坐标是出口,那么yes的值为1,探索成功,否那么值为0由于探索物不停的移动,要在新位置显示,并将走过的路恢复为白色通路,可以调用DrawPeople〔&x,&y,n〕完成.参数x和y代表所在的行坐标和列坐标,n代表所选的方向,根据n的值,将x和y进行相应的变化.7、Result〔〕结果处理函数最终结果是找到和没找到两种情况,在程序中设计全局变量yes,根据yes的值进行处理如果yes为0,调用函数NotFind〔〕,显示找到通路信息,否那么调用函数Find〔〕。
如果是系统自动探索,Find〔〕会显示出所走过的路径,如果是人工探索,没有记录走过的路径,只显示找到通路的信息8、Close〔〕图形关闭函数调用Closegraph〔〕关闭图形系统,程序结束四、测试数据及运行结果程序编译连接成功后,首先出现提示字符串“please select hard〔1〕 else auto〞询问是选择人工探索还是选择系统自动探索,其中1是人工探索如下图:当输入字符1时,此时是人工探索按回车键后出现一个迷宫图,红色矩形块出项在左上角,这时可以按代表8个方向的字符选择通路,假设可以找到通路,那么走的路都由红色标记,当遇到墙壁是那么不能通行,此时按回车键结束探索,屏幕出现“not find a way〞提示信息如果输入的字符不是1,那么系统自动查找通路如果没有找通路,那么显示没有找到通路的信息“not find a way〞,如果找到通路,那么用红色标记走过的路径,回车后结束探索如下图:找到出路,屏幕显示Find a way!五、总结本程序设计的目的是如何建一个逼真的迷宫图它是随机生成的且迷宫大小可以改变,大小为N×N,N可以预定义为常数,修改N的值就可以改变迷宫的大小。
程序采用了两种运行方式:一种通过自动探索,这是用递归方法实现;一种是由人工操作探索通过,这利用了手动操作8个代表不同的方向的键位来实现通过本程序的设计可以加深对递归算法的理解和编制,掌握数组的应用,同时提高了实际编程和操作能力使自己的实际操作水平得以提高程序所用到的知识点有:1〕数组的应用;2〕全局变量的应用;3〕递归算法;4〕指针变量作参数;5〕图形显示;6〕颜色的设置通过编写这个程序不仅提高了我们的专业知识,使我们能将自己所学的内容运用到实际中来,而且增强了彼此的合作能力,为以后的工作学习做了一个良好的铺垫六、源程序清单:#include

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


