c语言走迷宫Word格式.docx

上传人:b****6 文档编号:18594846 上传时间:2022-12-29 格式:DOCX 页数:8 大小:514.93KB
下载 相关 举报
c语言走迷宫Word格式.docx_第1页
第1页 / 共8页
c语言走迷宫Word格式.docx_第2页
第2页 / 共8页
c语言走迷宫Word格式.docx_第3页
第3页 / 共8页
c语言走迷宫Word格式.docx_第4页
第4页 / 共8页
c语言走迷宫Word格式.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

c语言走迷宫Word格式.docx

《c语言走迷宫Word格式.docx》由会员分享,可在线阅读,更多相关《c语言走迷宫Word格式.docx(8页珍藏版)》请在冰豆网上搜索。

c语言走迷宫Word格式.docx

//创建一个存储路径的栈

voidcreatmap(int(*mazemap)[10]);

//创建迷宫图纸

voidprintmap(int(*mazemap)[10]);

voidfootprint(intx,inty,intk,int(*mazemap)[10]);

intposition(intx,inty);

//判断是否到终点

intpassroad(intx,inty,int(*mazemap)[10]);

voidfindpath(int(*mazemap)[10],sqlist*mazepath);

//在mazemap当中寻找mazepaht

voidprintpath(sqlist*mazepath);

voidroadinwords(sqlist*mazepath);

//文字叙述如何走迷宫

voidpush(intx,inty,sqlist*mazepath);

//栈操作

voidpop(sqlist*mazepath);

voidgettop(sqlist*mazepath);

voidmain()

sqlistmazepath;

creatstack(&

mazepath);

intmazemap[10][10]={

1,1,1,1,1,1,1,1,1,1,

1,0,0,1,0,0,0,1,0,1,

1,0,0,0,0,1,1,0,0,1,

1,0,1,1,1,0,0,0,0,1,

1,0,0,0,1,0,0,0,0,1,

1,0,1,0,0,0,1,0,0,1,

1,0,1,1,1,0,1,1,0,1,

1,1,0,0,0,0,0,0,0,1,

1,1,1,1,1,1,1,1,1,1

};

//creatmap(mazemap);

printf("

迷宫原图为:

\n"

);

printmap(mazemap);

findpath(mazemap,&

走出迷宫图纸为:

走出迷宫文字叙述为:

roadinwords(&

//printpath(&

}

voidfindpath(int(*mazemap)[10],sqlist*mazepath)

intx,y,flag=0,k=0,next;

//位置是否可通,flag=0通,1墙,2通但不可走

x=1;

y=1;

//获取初始位置

push(x,y,mazepath);

//起点位置进栈

footprint(x,y,6,mazemap);

while(flag==0&

&

k!

=162)//flag==1到达终点,0未到达终点

{

if(passroad(x,y+1,mazemap)==0)

push(x,y+1,mazepath),y=y+1,footprint(x,y,6,mazemap);

elseif(passroad(x+1,y,mazemap)==0)

push(x+1,y,mazepath),x=x+1,footprint(x,y,6,mazemap);

elseif(passroad(x,y-1,mazemap)==0)

push(x,y-1,mazepath),y=y-1,footprint(x,y,6,mazemap);

elseif(passroad(x-1,y,mazemap)==0)

push(x-1,y,mazepath),x=x-1,footprint(x,y,6,mazemap);

else

footprint(x,y,2,mazemap),pop(mazepath),gettop(mazepath),x=topelem[0],y=topelem[1];

//printmap(mazemap);

k++;

flag=position(x,y);

//判断是否到达终点

//printf("

flag==%d\n"

flag);

}

voidcreatstack(sqlist*mazepath)

mazepath->

base=(int(*)[2])malloc(120*sizeof(int(*)[2]));

top=mazepath->

base;

listlen=120;

voidpush(intx,inty,sqlist*mazepath)

**(mazepath->

top)=x;

*(*(mazepath->

top)+1)=y;

top++;

voidpop(sqlist*mazepath)

if(mazepath->

top!

=mazepath->

base)

top--;

voidprintmap(int(*mazemap)[10])

int(*p)[10];

p=mazemap;

inti,j;

\n\n\n"

for(i=0;

i<

10;

i++)

for(j=0;

j<

j++)

{

if(j==0)

printf("

"

if(*(*(p+i)+j)==0)

▇"

elseif(*(*(p+i)+j)==1)

□"

elseif(*(*(p+i)+j)==6)

★"

else

if(j==9)

}

\n\n"

voidprintpath(sqlist*mazepath)

int(*p)[2];

p=mazepath->

while(p!

top)

printf("

x=%d,y=%d\n"

**p,*(*p+1));

p++;

voidgettop(sqlist*mazepath)

int(*q)[2];

{q=p;

p++;

topelem[0]=**q;

topelem[1]=*(*q+1);

voidfootprint(intx,inty,intk,int(*mazemap)[10])

if(x<

10&

y<

10)

*(*(mazemap+x)+y)=k;

intposition(intx,inty)

intflag;

if(x==8&

y==8)

flag=1;

else

flag=0;

return(flag);

intpassroad(intx,inty,int(*mazemap)[10])

intnum=1;

num=*(*(mazemap+x)+y);

return(num);

voidroadinwords(sqlist*mazepath)

intx=1,y=1,i=0;

if(x==**p&

y+1==*(*p+1))

printf("

向右走→→"

),x=**p,y=*(*p+1);

elseif(x+1==**p&

y==*(*p+1))

向下走→→"

elseif(x==**p&

y-1==*(*p+1))

向左走→→"

elseif(x-1==**p&

向上走→→"

i++;

if(i%3==0)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1