Para puntuaciones altas, solicite la solución del laberinto c (use primero la profundidad y primero el ancho)
#Include "stdio.h"
# include " conio . h "/*Proporcionar soporte para getch*/
#Definir el valor máximo 10< / p>
# define maxlength(max * max)/*La longitud máxima de la ruta*/
#Define zdir 4/*Dirección general*/
# incluye " gráficos . h "/*Proporcionar soporte de gráficos*/
#include "dos.h" /*Proporcionar soporte de función: suspensión */
#include "time.h" / *Proporcionar soporte para dormir*/
#Definir M 10/*longitud máxima del mapa*/
#Definir N 10/*longitud máxima del mapa*/
/ *Las siguientes cuatro funciones son funciones de estado*/
void print map(void);
int zfindpath(int row, int col, int erow, int ecol);
void creategraphich(int n1, int n2, int n3, int n4);
void creategraphich(int n1, int n2, int n3, int n4);
int zmap[max][max]={ {1,1,1,1,1,1,1,1,1,1,
{1,0,0,1,0 ,0 ,0,1,0,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}
};
Estructura {
int fila, col
}compensaciones[zdir]={{0, 1}
{1 , 0 },
{0, -1},
{-1, 0}
}; /p >
int line;
int col
} ruta[maxlength];
/*Defina una variable global para facilitar la salida*/
int len
int zfindpath(int fila, int col, int erow, int ecol)
{
int dir, fila2, col2
/* int x=150 col*22, y = 100 fila * 22 */
sleep(1);
establecer color(10) ); /*Dibujar un círculo*/
setfillstyle(1, 14
circle(150 (col)* 22 10, 100 (fila)*22 10, 8) ;
relleno de inundación(150 (col)* 22 10 4, 100 (fila)*22 10 4, 10);
if((fila = = erow) amp;
amp(col==ecol))
{ruta[0]. fila = erow
ruta[0]. col = ecol/*Juzga si es una salida*/
Retorno 1;
El final de if*/
zmap[row][column] = 2 ;/*Bloquear la posición actual*/
for(dir = 0; dir ltzdirdir)
{
row2=row offsets[dir]. Fila; /*saltar al siguiente espacio*/
col2=col offsets[dir]. col
if(zmap[row2][col2]==0) /*Indica la forma en que se puede realizar esta etapa*/
{
len =zfindpath (fila2, col2, erow, ecol);
if (len gt; 0)
{
Ruta [len]. fila = fila2/*Usa la recursividad para encontrar la ruta*/
Ruta [len].
col = col2
devuelve len;
del final de if*/
del final de if*/
}/ * para el final de la columna*22, 120 fila * 22);
/*sleep(1);*/
return 0;
}/ * fin de zfindpaht* /
void printmap() /*Primero, imprima el mapa al que queremos ir*/
{
int i, j ;
for(I = 0; i ltmaxi )
{
for(j = 0; j ltmaxj )
printf( " d ",zmap[I ][j]);
printf(" \ n "
}
getch(); >
} p>
void createmap(int n1, int n2, int n3, int n4)
{
int i, j, tamaño, trow , tcol, x=150 n2 *22, y = 100 n 1 * 22
void * buf
int gdriver=DETECT, gmode = VGAHI
gráfico de inicio( amp; g driver amp;gmode, "c:\\TC");
borrar dispositivo();
setbkcolor(10);
set color(1);
settextstyle(4, 0, 5);
outtextxy(70, 20, "¡Hola, bienvenido aquí!"); p>establecer color (4);
setfillstyle(1, 4);
for(I = 0;ilt10;i)
for(j = 0;j lt10; j )
{
if(zmap[I][j]= = 1){ setfillstyle(1, 4); 100 i* 22, 170 j*22, 120 I * 22); /* dormir (1); */}
else {setfillstyle(1, 15); i*22 , 170 j*22, 120 I * 22); /* dormir (1 */}
}
Línea (100, 80, 150 n2*22); , 100 n 1 * 22);/*Dibujar una línea*/
Línea (337 (n4-8)* 22287 (n3-8)* 22337360);
establecer color (1) ;
settextstyle(4, 0, 3);
outtextxy(80, 60, "¡Esta es la entrada! ");
outtextxy(320, 360, "¡Esta es la salida!");
}
void creategraphich(int n1, int n2, int n3 , int n4)
{
int i
, j, tamaño, trow, tcol, x=150 n2*22, y = 100 n 1 * 22;
void * buf
int gdriver=DETECT, gmode = VGAHI
iniciar gráfico(&g controlador & gmode, "c:\\TC");
borrar dispositivo();
setbkcolor(10); >
set color(1);
settextstyle(4, 0, 5
outtextxy(70, 20, "¡Hola, bienvenido aquí!"); p>
establecer color(4);
setfillstyle(1, 4)
for(I = 0; i lt10; i )
for(j = 0; j lt10; j )
{
if(zmap[I][j]= = 1){ setfillstyle(1, 4); j*22, 100 i*22, 170 j*22, 120 I * 22); /* dormir (1 */}
else {setfillstyle(1, 15); *22, 100 i*22, 170 j*22, 120 I * 22); 150 n2*22, 100 n 1 * 22); /*Dibuja una línea*/
Línea (337 (n4-8)* 22287 (n3-8)* 22337360);
set color(1);
settextstyle(4, 0, 3);
outtextxy(80, 60, "¡Esta es la entrada!");
outtextxy(320, 360, "¡Esta es la salida!");
set color(4);/*Dibuja un corazón redondo*/
setfillstyle(1, 4);
Sector (250, 350, 0, 180, 20, 20); /*Dibuja el círculo arriba*/
Sector ( 290, 350, 0, 180, 20, 20); /*Dibujar un círculo*/
Plato (310, 350, 180, 240, 80, 76);
Ventilador (230, 350, 300, 360). , 80, 76);
set color(10);/*Dibujar un círculo*/
setfillstyle(1,14);
p>círculo (150 (N2)* 22 10, 100 (n 1)* 22 10, 8);
relleno de inundación(150 (N2)* 22 10 4, 100 (n 1 )* 22 10 4, 10);
tamaño = tamañoimagen(150 (N2)* 22 10-8, 100 (n 1)* 22 10-8, 150 (n2)*22 10 8, 100 (n 1)* 22 65438 65438
buf=malloc(tamaño);
getimage(150 (N2)* 22 10-8, 100 (n 1)* 22 10 -8,150 (n2 )*22 10 8,100 (n 1)* 22 10
/*Dormir(2);
poner
image(192, 122, buf, COPY _ PUT); */
for(I = len; i gt0; i - ) /*El número total de rutas es len-1 */
{
trow=ruta[i-1]. Ruta de fila[i]. fila;
tcol=ruta[i-1]. ruta de la columna [i].
col
sleep(1);
x = x tcol * 22;
y = y trow * 22;
putimage( x, y, buf, COPY _ PUT);
}
/*Imprimir resultados*/
establecer color(1);
settextstyle(4, 0, 3);
outtextxy(357, 287, "¡¡¡Exitoso!!!");
getch(); closegraph();
free((void *)buf);
}
void changemap(int d)
{
ARCHIVO * fw
int i, j
if (d==1)
{
fw=fopen("c:\\tc\\a.txt "," r ");
if (!fw) {printf("¡No encontrado!"); getch(); }
for(I = 0;i ltm;i)
{ for(j = 0;j ltn;j) { fscanf(fw, " d ", ampzmap[ I ][j]);}
}/* El final de for*/
}/*El final del primer if*/
De lo contrario{
fw=fopen("c:\\tc\\b.txt", "r");
if (!fw) {printf("¡No encontrado!") ;getch();return;}
for(I = 0;i ltm;i)
{ for(j = 0;j ltn;j) { fscanf(fw, " d ", ampzmap[I][j]);}
}/* fin de for*/
}/* fin de else*/
printf("El mapa seguiremos la búsqueda:\n");
for(I = 0;i ltm;i)
{ for(j = 0;j ltn ; j ) { printf(" d ", zmap[I][j] }
printf(" \ n "); > getch();
fclose(fw);
}
principal()
{
mientras (1){
int i, j, n1, n2, n3, n4, n5, n6;
int zch
/* mientras(1) ) { */
len = 0;
printf("Si desea usar la textura predeterminada, presione 1, si desea usar la textura de respaldo, presione 2:\ n");
scanf("d ", ampzch);
if (zch==2)
cambiar mapa(1);
/* imprimir mapa();*/
Otros
{
cambiar mapa(2);
/ * print map();* / /*Primero, imprima el mapa al que queremos ir*/
}
printf("Por favor, introduzca el punto de partida (fila, columna) :\n "); /*Ingrese el punto inicial y el punto final, estos dos valores deben ser menores que 10 y mayores que 0*/
scanf("dd ", ampn 1; N2);
printf("Ingrese el punto final (fila, columna):\n "); ampn3 , ampn4);
n5 = n 1;
n6 = n2
createmap(n5, n6, n3, n4); , Crearemos el mapa original */
zfindpath(n1, n2, n3, n4); /*Función de búsqueda de ruta */
Ruta [len]. fila = n5
Ruta[len]. col = n6
getch();
closegraph();
printf("La ruta del resultado es\n "); > for(I = len; i gt0; i -)
{
printf("(d, d)\n ", ruta[i]. línea, ruta[i] ] . col);
}/* Fin de for */
getch();
printf("Ahora crearemos la forma final de el mapa: \n ");/*Crear el gráfico final del mapa*/
getch();
creategraphich(n5, n6, n3, n4); p>
}/* El final de while*/
}/* El final de main*/