




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#include #include SQ_Stack.husing namespace std;struct Visitedint num; /是否是通路(1或0)int visited; /判断是否已被访问(1或0);class MiGongprivate:Visited maze100100; /存储迷宫的矩阵int n; /迷宫大小(n*n)int pow; /判断方向的变量public:void creat() /建造迷宫int choose,i,j;while(1)cout1.自动输入endl;cout2.手动输入endl;coutchoose;system(cls);if(choose=1) /自动输入coutn;for(i=0;in;i+) /访问位初始化,赋值为0for(j=0;jn;j+)mazeij.visited=0;srand(unsigned)time(0); cout你生成的迷宫为(n*n型):endl;for( i=0;in;i+)for( j=0;jn;j+)if(i=0|j=0|i=n-1|j=n-1)/若是边界,则置为1mazeij.num=1;elsemazeij.num=(rand()%(2-0);if(i=1&j=1)/入口置为0mazeij.num=0;else if(i=n-2&j=n-2)/出口置为0mazeij.num=0;coutmazeij.num ;if(j=n-1)coutendl;coutendl;break;else if(choose=2) /手动输入coutn;for(i=0;in;i+)/访问位初始化为0for(j=0;jn;j+)mazeij.visited=0;system(cls);while(1)int c;cout1.当前页面输入:endl;cout2.文件输入:c;if(c=1)system(cls);cout请手动输入迷宫:endl;int mi;cout你生成的迷宫为(n*n型):endl;for( i=0;in;i+)for( j=0;jmi;mazeij.num=mi;coutmazeij.num ;if(j=n-1)coutendl;coutendl;coutendl;break;else if(c=2)ifstream infile(输入迷宫.txt);for(i=0;in;i+)for(j=0;jmazeij.num;coutmazeij.num ;if(j=n-1)coutendl;infile.close();break;elsecout输入错误,请重新输入!;system(pause);system(cls);continue;break;elsecout输入错误,请重新输入!;system(pause);system(cls);continue;void seek() /寻找路径SQ_Stack Stack;/定义栈Stack.InitStack();/栈初始化if(mazen-2n-2.num) return; /若出口为0,则跳出int i=n-2,j=n-2;int pow,a=0;do /开始寻找线路if(!mazeij.num)&(mazeij.visited=0)/如果是通路且从未被访问if(i!=Stack.getTI()|(j!=Stack.getTJ()/如果该点未入栈,则入栈,访问该点Stack.push(i,j);mazeij.visited=1;/且把访问位置为1if(i=1&j=1)/如果是出口则跳出全部循环a=1;break;i=i;/初始向左访问j=j-1;pow=0;else/如果不是通路int back1,back2;pow+;/方向位改变i=Stack.getTI();/回到访问的点j=Stack.getTJ();while(1) if(pow=1)/向左一位访问 j-;if(i=Stack.getI()&(j=Stack.getJ()/如果是来路pow+;/则改变方向位i=Stack.getTI();/回到访问的点j=Stack.getTJ();continue;elsebreak; else if(pow=2)/向上一位访问 i-;if(i=Stack.getI()&(j=Stack.getJ()pow+;i=Stack.getTI();j=Stack.getTJ();continue;elsebreak; else if(pow=3)/向下一位访问i+;if(i=Stack.getI()&(j=Stack.getJ()pow+;i=Stack.getTI();j=Stack.getTJ();continue;elsebreak;else if(pow=4)/向右一位访问j+;if(i=Stack.getI()&(j=Stack.getJ()pow+;i=Stack.getTI();j=Stack.getTJ();continue;elsebreak;elseStack.pop(back1,back2);/若四个方向均不通,就弹栈mazeback1back2.num=1;/将该点的通路位置为1i=Stack.getTI();/继续往回的点找通路j=Stack.getTJ();pow=0;break;if(Stack.StackEmpty()/如果栈为空,则表示无通路。break;while(a=0);if(!Stack.StackEmpty()int x,y;int v=Stack.StackLength()-1; /v用来访问栈int total=Stack.StackLength();while(total)Stack.visit(x,y,v);mazexy.num=8;total-;system(pause);system(cls);cout线路为:endl;ofstream outfile(迷宫线路.txt,ios:app);for(int i=0;in;i+)for(int j=0;jn;j+)if(mazeij.num=8)coutsetw(2)setiosflags(ios:left) ;cout.width(2);outfilesetiosflags(ios:left) ;elsecoutsetw(2)setiosflags(ios:left)mazeij.num ;cout.width(2);outfilesetiosflags(ios:left)mazeij.num ;if(j=n-1)coutendl;outfileendl;outfileendl;Stack.output();elsesystem(pause);system(cls);Stack.output();/输出通路Stack.DestroyStack();/销毁栈void menu()MiGong m;/定义MiGong类int i=0;cout*欢迎进入迷宫游戏*endl;coutendl;cout 进入游戏 endl;coutendl;cout*endl;docreat();/建立迷宫seek();/寻找通路whil
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二年级数学计算题专项练习集锦
- 2025版学校“五一”劳动节劳动教育系列活动方案
- 2025年工业互联网平台网络安全态势感知技术安全态势感知技术研究与应用报告
- LL体外诊断器械制造商2023上半年员工参与与公司治理ESG报告
- 职场新人入职培训方案与考核标准
- 冷链物流货物追踪与监控方案
- 绿色包装产业创新:环保纸包装产品在文创产品中的应用报告
- 汽车设备租赁合同及安全管理协议
- 城市排水系统环境影响评估方案
- 购销商品合同(标准版)
- (2025年标准)动火安全协议书
- 动物防疫检疫试题(附答案)
- 多媒体教室使用的课件
- 2025年军队专业技能岗位文职人员招聘考试(工程机械驾驶员)历年参考题库含答案详解(5卷)
- 2025年下半年广西现代物流集团社会招聘校园招聘笔试参考题库附带答案详解(10套)
- 2025年粉笔辅警考试题库
- 水声传感器技术研究与应用
- 高中英语必背3500单词表完整版
- 残疾人家庭无障碍改造投标方案(技术标)
- 物料断点管理办法新旧状态零部件切换的交替点管理程序
- 人卫九诊断学发热
评论
0/150
提交评论