int main() { pathtype a; mgpath(1,1,8,8,a); system("pause"); return 0; }
void mgpath(int xi,int yi,int xe,int ye,pathtype path) { int i,j,di,count=0,k; if(xi==xe&&yi==ye) { path.data[path.length].i=xi; path.data[path.length].j=yi; path.length++; printf("ÃÔ¹¬Â·¾¶%dÈçÏÂ:\n",++count); for(k=0;k<path.length;k++) { printf("\t(%d,%d)",path.data[k].i,path.data[k].j); if((k+1)%5==0) printf("\n"); } printf("\n"); } else { if(mg[xi][yi]==0) { di=0; while(di<4) { path.data[path.length].i=xi; path.data[path.length].j=yi; path.length++; switch(di) { case 0:i=xi-1;j=yi;break; case 1:i=xi;j=yi+1;break; case 2:i=xi+1;j=yi;break; case 3:i=xi;j=yi-1;break; } mg[xi][yi]=-1; mgpath(i,j,xe,ye,path); mg[xi][yi]=0; path.length--; di++; } } } }
void main(void) { sta: reset(); puts("\t\t\t\t说明:\n"); puts("1、鼠标左键点击添加墙壁,右键取消添加"); puts("2、双击左上角在S开始走迷宫"); puts("3、按回车键走下一步\n"); for(int i=0;i<10;i++) { for(int j=0;j<10;j++) if(fkm[j][i]!=0)printf(" %2d ",fkm[j][i]); else printf(" "); puts(""); } while(1) { if(mousemove()==1) { puts("迷宫:"); for(int i=0;i<10;i++) { for(int j=0;j<10;j++) if(fkm[j][i]!=0)printf(" %2d ",fkm[j][i]); else printf(" "); puts(""); } if(mgpath(1,1,8,8)) { int ret;ret=MessageBox(NULL,"找到出口了,是否继续?","迷宫",MB_YESNO | MB_SYSTEMMODAL ); if(ret==IDYES)goto sta; else break; } else { int ret;ret=MessageBox(NULL,"没有找到出口,是否继续?","迷宫",MB_YESNO | MB_SYSTEMMODAL ); if(ret==IDYES)goto sta; else break; } } } closegraph(); /*图形结束*/ }