数据结构课程设计 - 迷宫(4)
if(c=='q'&&map[x-][y-1]!=1) DrawPeople(&x,&y,8);//左上 }
setfillstyle(SOLID_FILL,WHITE);//消去红色探索物,恢复原迷宫图 bar(100+y*15-6,50+x*15-6,100+y*15+6,50+x*15+6); if(x==N-2&&y==N-2)//人工控制找成功的话 yes=1;//如果成功标志为1 }
//拷贝迷宫数组
void WayCopy(int(*oldmap)[N],int(*map)[N]) {
int i,j;
for(i=0;i oldmap([i][j]=map[i][j]; } //递归找路 int FindWay(int (*map)[N],int i,int j) { if(i==N-2&&j==N-2)//走到路口 { yes=1;//标志为1,表示成功 return; } map[i][j]=1;//走过的地方变为1 WayCopy(oldmap,map);//拷贝迷宫图 if(oldmap[i+1][j+1]==0&&!yes)//判断右下方是否可走 { FindWay(oldmap,i+1,j+1); if(yes)//如果到达出口了,再把值赋给显示路线的way数组,也正是这个原因,所以具体路线是从最后开始保存 { way[wayn][0]=i; way[wayn++][1]=j return; } } WayCopy(oldmap,map); if(oldmap[i+1][j]==0&&!yes)//判断下方是否可以走,如果标志yes已经是1,则不用找下去了 - 15 - { FindWay(oldmap,i+1,j); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } } WayCopy(oldmap,map); if(oldmap[i][j+1]==0&&!yes)//判断右方是否可以走 { FindWay(oldmap,i,j+1); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } } WayCopy(oldmap,map); if(oldmap[i-1][j]==0&&!yes)//判断上方是否可以走 { FindWay(oldmap,i-1,j); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } } WayCopy(oldmap,map); if(oldmap[i-1][j+1]==0&&!yes)//判断右上方是否可以走 { FindWay(oldmap,i-1,j+1); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } } WayCopy(oldmap,map); if(oldmap[i+1][j-1]==0&&!yes)//判断左下方是否可走 - 16 - { FindWay(oldmap,i+1,j-1); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } } WayCopy(oldmap,map); if(oldmap[i][j-1]==0&&!yes)//判断左方是否可走 { FindWay(oldmap,i,j-1); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } } WayCopy(oldmap,map); if(oldmap[i-1][j-1]==0&&!yes)//判断左上方是否可走 { FindWay(oldmap,i-1,j-1); if(yes) { way[wayn][0]=i; way[wayn++][1]=j; return; } } return; } //开始的随机迷宫图 void MapRand(int (*map)[N]) { int i,j; cleardevice();//清除图形屏幕 randomize();//随机数发生器 for(i=0;i for(j=0;j - 17 - { if(i==0||i==N-1||j==0||j==N-1)//最外面一圈为墙壁 map[1][j]=1; else if(i==1&&j==1||i==N-2||&&j==N-2)//出发点与终点表示为可走的 map[i][j]=0; else map[i][j]=random(2);//其他的随机生成0或1 } } } //输出迷宫图 void PrMap(int (*map)[N]) { int i,j; for(i=0;i setfillstyle(SOLID_FILL,WHITE);//白色为可走的路 bar(100+j*15-6,50+i*15-6,100+j*15+6,50+i*15+6); } else { setfillstyle(SOLID_FILL,BLUE);//蓝色为墙壁 bar(100+j*15-6,50+i*15-6,100+j*15+6,50+i*15+6); } } //找到通路 void Find(void) { int i; setfillstyle(SOLID_FILL,RED);//红色输出走的具体路线 wayn--; for(i=wayn;i>=0;i--) { bar(100+way[i][1]*15-6,50+way[i][0]*15-6,100+way[i][1]*15+6,50+way[i][0]*15+6); sleep(1);//控制时间显示 - 18 - } bar(100+(N-2)*15-6,50+(N-2)*15-6,100+(N-2)*15+6,50+(N-2)*15+6);//在目标点标红色 setcolor(GREEN); settextstyle(0,0,2);//设置字体大小 outtextxy(130,400,\} //没找到通路 void NotFind(void) { setcolor(GREEN); settextstyle(0,0,2);//设置字体大小 outtextxy(130,400,\} //结果处理 void Result(void) { if(yes)//如果找到 Find(); else//没找到路 NotFind(); getch(); } //图形关闭 void Close(void) { closegraph(); } - 19 -
相关推荐:
- [互联网资料]2022年厦门大学机电工程系824机械设计
- [互联网资料]东南大学2022年硕士研究生拟录取名单公
- [互联网资料]能源调研报告(精选多篇)
- [互联网资料]初三英语下学期 中考英语 语法填空训练
- [互联网资料]2022内蒙古选调生行测常识备考:新事物
- [互联网资料]自驾必备!在新西兰租什么样的车自驾游
- [互联网资料]佛教素食菜谱44页未完
- [互联网资料]盈利能力分析外文翻译
- [互联网资料]2022年南昌航空大学音乐学院736马克思
- [互联网资料]优选外贸跟单实习报告总结(精品版)
- [互联网资料]银行新员工培训总结
- [互联网资料]2_year_visa_new_guidance_190316
- [互联网资料]天津市五校宝坻一中静海一中杨村一中芦
- [互联网资料]2007--2008学年第一学期高三数学宁波市
- [互联网资料]Chromatic framework for vision in ba
- [互联网资料]幼儿园大班上学期美术教案《心愿树》含
- [互联网资料]2022年华中农业大学信息学院820微型计
- [互联网资料]硬盘坏道的表现 __硬盘使用久了
- [互联网资料]江苏省2016年会计从业资格考试《会计基
- [互联网资料]公共场所卫生监督试卷全解
- 高级英语第一册所有修辞方法及例子总结
- 综合交通枢纽规划与城市发展
- 沃尔玛的企业文化案例分析
- 美国Thanksgiving Day 感恩节 介绍
- PEP六年级英语上册Unit6How do you fee
- 最齐全的中国大型商场购物中心名单
- 数据结构实验报告八—哈夫曼编译码
- 杭州市余杭区人民政府(通知)
- 七年级语文成语运用专项训练
- 微观经济学第三章 消费者行为 课后习题
- 对_钱学森之问_的思考
- Excel_三级联动_下拉菜单
- 办公用品需求计划申请表
- 对外汉语教材必须要知道的发展史
- 挑战杯大学生学术科技作品竞赛作品申报
- 举办民办教育培训机构应具备下列条件
- 太阳能路灯项目设计方案
- 2013年八年级上最新人教版新教材Unit3I
- 【历史】 6-4 《近代科学之父牛顿》 课
- 高中生物《第四章 第二节 探讨加酶洗衣




