Códigos interesantes para la programación en lenguaje C
# include & ltstdio.h & gt
# include & ltconio.h & gt
# include & ltstdlib.h & gt
# include & ltwindows.h & gt
int m = 0;? // ¿Qué nivel representa m?
Mapa de estructura { short a[9][11];};
Mapa de estructura [5]={ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,? //***5 niveles, 9 líneas por nivel.
0,1,1,1,1,1,1,1,0,0,0,
0,1,0,0,0,0,0, 1,1,1,0,
1,1,4,1,1,1,0,0,0,1,0, ?//0 espacio abierto, 1 pared
? 1,5,0,0,4,0,0,4,0,1,0, ?//4 es la caja y 5 es la persona.
1,0,3,3,1,0,4,0,1,1,0, ?//3 es el destino
1,1,3,3 ,1,0,0,0,1,0,0, ?//7 significa que el cuadro está en el destino (4+3)
0,1,1,1,1,1, 1, 1,1,0,0, ?//8 es la persona en el destino (5+3)
? 0,0,0,0,0,0,0,0,0,0,0,
? 0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,1,0,0,0,0,0 ,
0,0,1,5,0,1,1,1,0,0,0,
0,0,1,0,4,0,0 ,1,0,0,0,
? 0,1,1,1,0,1,0,1,1,0,0,
0,1,3,1,0,1,0,0,1,0,0 ,
0,1,3,4,0,0,1,0,1,0,0,
0,1,3,0,0,0,4 ,0,1,0,0,
? 0,1,1,1,1,1,1,1,1,0,0,
? 0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,1,1,1,1,0 ,
0,0,1,1,0,0,1,0,5,1,0,
0,0,1,0,0,0,1 ,0,0,1,0,
? 0,0,1,4,0,4,0,4,0,1,0,
0,0,1,0,4,1,1,0,0,1,0 ,
1,1,1,0,4,0,1,0,1,1,0,
1,3,3,3,3,3,0 ,0,1,0,0,
? 1,1,1,1,1,1,1,1,1,0,0,
? 0,1,1,1,1,1,1,1,1,1,0,
0,1,0,0,1,1,0,0,0,1,0 ,
0,1,0,0,0,4,0,0,0,1,0,
0,1,4,0,1,1,1 ,0,4,1,0,
? 0,1,0,1,3,3,3,1,0,1,0,
1,1,0,1,3,3,3,1,0,1,1 ,
1,0,4,0,0,4,0,0,4,0,1,
1,0,0,0,0,0,1 ,0,5,0,1,
? 1,1,1,1,1,1,1,1,1,1,1,
? 0,0,0,0,0,0,0,0,0,0,0,
0,0,0,1,1,1,1,1,1,0,0 ,
0,1,1,1,0,0,0,0,1,0,0,
1,1,3,0,4,1,1 ,0,1,1,0,
? 1,3,3,4,0,4,0,0,5,1,0,
1,3,3,0,4,0,4,0,1,1,0 ,
1,1,1,1,1,1,0,0,1,0,0,
0,0,0,0,0,1,1 ,1,1,0,0,
? 0,0,0,0,0,0,0,0,0,0,0 };
¿Anular DrMap()? //Dibujar un mapa
{Console_Cursor_Information Cursor_Information={1, 0}; //Ocultar configuración del cursor
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_ HANDLE), & ampcursor_info);
Printf("\n\n \t\t\bpush box");
printf("\n\t") ;
for(int I = 0 ;i<9;i++)
{ para(int j = 0;j<11;j++)
{Switch(mapping[m].a[i][j])
{Caso 0:? printf("?);Descanso;
Caso 1:?printf("■");Descanso;
Caso 3:?printf("◎";Descanso;
Caso 4:? printf("□"); break;
Caso 5:? printf("♂"; break; //5 es una persona
7 :? printf("□"); //4+3 cajas están en el destino
Caso 8:? printf("♂"; //Destino 5+3 personas
}
}
printf(" \ n \ t ");
}
} p>
void gtxy(int x, int y)? //Función para controlar la posición del cursor
{ COORD coord
Coordenadas. SetConsoleCursorPosition(GetStdHandle(STD _ OUTPUT _ HANDLE), coord);
}
void start()? Juego
{ int r, c; r, c se utiliza para registrar el subíndice de una persona
for(int I = 0; i<9;i++)
{ for(int j = 0; j & lt11;j++ )
{if (mapa[m].a[I][j]= = 5 | |mapa[m]. a[I][j]= = 8){ r = I;? c = j;}} //i j subíndice
tecla char;? /p>
clave = getch();
Cambiar (tecla)
{Caso 'W':
Caso "w":
Caso 72:
if(map[m].a[r - 1][ c] == 0||map[m].a [r - 1][c ] == 3)
{ gtxy(2*c+8, r-1+3); "♂";? // gtxy(2*c+8, r-1+3 ) es el carácter que se envía a la posición especificada
? c] == 5){gtxy(2*c+8, r+3); printf ("?);}
?if(mapping[m].a[r][c] = = 8){gtxy(2*c+8, r+3);printf("◎ ";}
?Map[m].a[r-1][c]+= 5; ? mapa[m]. a[r][c]-= 5;}
¿Y si? if(mapa[m].a [r - 1][c] == 4 ||mapa[m].a [r - 1][c] == 7)
? { if (mapa[m].a [r - 2][c] == 0 || mapa[m].a[r-2][c]= 3)
{ gtxy(2 *c+8, r-2+3); printf("□"); gtxy(2*c+8, r-1+3); printf("♂";
?if( Mapeo [m].a[r ][c] == 5){gtxy(2*c+8, r+3); printf("?);}
?if (mapeo [m]. ].a[r ][c] == 8){gtxy(2*c+8,r+3);printf("◎";}
?Map[m].a[r -2][c]+= 4;? mapa[m]. a[r-1][c]+= 1;
Mapa[m].
a[r][c]-= 5;}
}Roto;
Caso:
Caso:
Caso 80:
if(mapa[m].a [r + 1][c] == 0 ||mapa[m].a [r + 1][c] == 3)
{ gtxy(2*c+8, r+1+3); printf("♂";
if(mapeo[m].a[r][c] == 5) {gtxy(2*c+8, r+3); printf("?);}
?if (mapeo[m].a[r][c] == 8){gtxy( 2*c+8, r+3); printf("◎";}
?Mapa[m]. a[r+1][c]+= 5;?Mapa[m]. a[r][c]-= 5;}
si no (mapa[m].a [r + 1][c] == 4 ||mapa[m].a [r+ 1 ][c] == 7)
{ if (mapa[m].a [r + 2][c] == 0 ||mapa[m].a [r + 2][c ] == 3)
? { gtxy(2*c+8, r+2+3); printf("□"); ;printf("♂";
if(mapping[m].a[r][c] == 5){gtxy(2*c+8, r+3);printf("? );}
? if(mapping[m].a[r][c] == 8){gtxy(2*c+8, r+3);printf("◎";}
? mapa[m].a[r+2][c]+= 4; mapa[m].a[r][c]-= 5;}
}Roto;
Caso "A":
Caso "a"”:
Caso 75:
if(mapa[m].a [r][c - 1] == 0 ||mapa[m].a [r ][ c - 1] == 3)
{ gtxy (2*(c-1)+8, r+3); printf("♂";
if(mapa [m].a[r ][c] == 5){gtxy( 2*c+8, r+3);printf("?);}
?if(mapping[m] .a[r ][c] == 8){gtxy(2*c +8,r+3);printf("◎";}
Mapa[m].a[r][ c-1]+= 5; mapa[m]. a[r][c]-= 5;}
else if (mapa[m].a [r][c - 1] == 4 ||mapa[m].a [r] [c - 1] == 7)
? {if (mapa[m].a [r ][c - 2] == 0 || mapa[m].a [r ][c - 2] == 3)
{ gtxy( 2*(c-2)+8, r+3); printf("□"); gtxy(2*(c-1)+8, r+3); p>? if (mapping[m].a[r][c] == 5){gtxy(2*c+8, r+3); if(map[m].a[r][c] == 8){gtxy(2*c+8, r+3);printf("◎";}
?map[m ]. a[r][c-2]+= 4; mapa[m]. a[r][c-1]+=
?
a[r][c]-= 5;}
}Roto;
Caso "D":
Caso "d":
Caso 77:
if(mapa[m].a [r][c + 1] == 0 ||mapa[m].a [r][c + 1] == 3)
{ gtxy(2*(c+1)+8, r+3; printf("♂";
if(mapa[m].a[r); ][c] == 5){gtxy(2*c+8, r+3); printf("?);}
if (mapeo [m].a[r ][c] == 8) {gtxy(2*c+8, r+3); printf("◎";}
?Mapa[m].a[r][c+1]+= 5 ;? mapa[m].a[r][c]-= 5;}
?else if (mapa[m].a[r][c + 1] == 4 || [ m].a [r][c + 1] == 7)
? { if (mapa[m].a [r][c + 2] == 0 ||mapa[m] ]. a [r][c + 2] == 3)
{ gtxy(2*(c+2)+8, r+3); *(c+1)+8, r+3);printf("♂";
?if(mapping[m].a[r][c] == 5){gtxy(2 *c+8, r+3);printf("?);}
?if (mapeo[m].a[r][c] == 8){gtxy(2*c+ 8 , r+3); printf("◎";}
? Mapa[m].a[r][c+2]+= 4; Mapa[m].a[r][ c +1]+= 1;
? Mapa[m]. a[r][c]-= 5;}
}Roto;
}
}
int ifwan()? //¿Está completo (1 es 0 y no)
{ if(m==0){if( mapa[m].a[5][2]= = 7 && mapa[m].a[5][3]== 7&&
? = 7 && mapa[m]. a[6][3]==7) devuelve 1;}
if(m== 1){if(mapa[m].a[5][ 2]= = 7 &&& mapa[m].a[6][2]= = 7 &&&
? mapa[m]. a[7][2]==7) devuelve 1;}
if(m==2){if(map[m].a[7][1]== 7 & amp; & amp mapa[m]. a[7][2]= = 7 & amp;& mapa[m]. 7][5]==7) devuelve 1; }
if(m ==3){if(mapa[m].a[4][4]== 7 &&& mapa[m] .a[4][5]== 7 &&map[m ]. a[4][6]= = 7&&map[m]. m]. [5][5]== 7&&map[m]. a[5][6]==7) devuelve 1;}
if(m==4){if ( mapa[m].a[3][2]= = 7 && mapa[m]. a[4][1]== 7&& mapa[m].
a[4][2]= = 7&&
Mapa[m]. a[5][1] = = 7&&mapa[m]. a[5][2]==7) devuelve 1;}
Devuelve 0;
}
int main()? //Función principal
{ while (1)
? { sistema(" cls ");
dr map();
mientras (1)
{ inicio();
? if(if wan()){ printf(" \ 007 "); break } // Toca el timbre cuando termine.
? }
m+= 1;
}
? Devuelve 0;
}