Red de conocimiento informático - Consumibles informáticos - Para puntuaciones altas, solicite la solución del laberinto c (use primero la profundidad y primero el ancho)

Para puntuaciones altas, solicite la solución del laberinto c (use primero la profundidad y primero el ancho)

Lo hice hace mucho tiempo y ahora lo olvidé. Échale un vistazo. También puedo enviarte mi informe, pero aún espero que puedas aprender a hacerlo tú mismo. La sabiduría joven hace sabio al país. c y C son lo mismo. Solo necesita cambiar las reglas gramaticales, como las declaraciones de entrada y salida, cambiar la estructura a una clase o no cambiarla.

#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(); >

}

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í!");

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);

}/* El final de while*/

}/* El final de main*/