Páginas: [1]
|
 |
|
Autor
|
Tema: AYUDA CON UN LABERINTO!! URGENTE: (Leído 435 veces)
|
ktulucult
Desconectado
Mensajes: 3
|
Hola compañeros soy nuevo en este foro y ya les presento mi primera duda  bueno lo que pasa es lo siguiente en la u me pidieron hacer un laberinto basico en lenguaje c, sin graficos, lo mas basico posible. mi problema radica en que me pidieron mover a un monito con el teclado y no se como hacerlo, no encuentro los codigos para lograr moverlo. si alguien me puede ayudar con esto, se los agradeceria un monton. PD: el compilador que toy ocupando es el turbo c++ 3.1, por que lo tienen en la u.. personalmente ocupo el dev pero en la u no lo pescan XD eso nu mas ojala puedan ayudarme!! adios
|
|
|
|
|
En línea
|
|
|
|
cΔssiΔnі
Desconectado
Mensajes: 548
|
/************** TIPICO PROGRAMA DE LABERINTO ************************* ********************** by: LUIS SANDIOVAL ***************************/ #include <stdio.h> #include <conio.h> #include <dos.h> int mat[20][20]; void llenado() { int i,o; //llenado de la matriz for (i=0;i<20;i++) { for (o=0;o<20;o++) { mat[i][o]=1; } } //dejando los caminos i=1; mat[1][i]=0; for(o=14;o<17;o++) mat[o][i]=0; mat[5][i]=0; mat[10][i]=0; i=2; mat[10][i]=0; mat[14][i]=0; mat[16][i]=0; for(o=1;o<9;o++) mat[o][i]=0; i=3; mat[1][i]=0; for(o=8;o<15;o++) mat[o][i]=0; mat[5][i]=0; mat[16][i]=0; i=4; mat[1][i]=0; mat[2][i]=0; mat[5][i]=0; mat[8][i]=0; mat[16][i]=0; mat[17][i]=0; mat[18][i]=0; i=5; for(o=11;o<15;o++) mat[o][i]=0; mat[2][i]=0; mat[5][i]=0; mat[8][i]=0; i=6; for(o=7;o<12;o++) mat[o][i]=0; for(o=14;o<19;o++) mat[o][i]=0; mat[2][i]=0; mat[4][i]=0; mat[5][i]=0; i=7; mat[2][i]=0; mat[4][i]=0; mat[7][i]=0; mat[11][i]=0; mat[14][i]=0; mat[18][i]=0; i=8; mat[2][i]=0; mat[4][i]=0; mat[7][i]=0; for(o=9;o<15;o++) mat[o][i]=0; mat[17][i]=0; mat[18][i]=0; i=9; mat[9][i]=0; mat[17][i]=0; for(o=2;o<8;o++) mat[o][i]=0; i=10; mat[3][i]=0; mat[7][i]=0; mat[9][i]=0; for(o=14;o<19;o++) mat[o][i]=0; i=11; mat[18][i]=0; for(o=3;o<8;o++) mat[o][i]=0; for(o=9;o<15;o++) mat[o][i]=0; i=12; mat[3][i]=0; mat[7][i]=0; mat[9][i]=0; mat[14][i]=0; mat[18][i]=0; i=13; mat[1][i]=0; mat[2][i]=0; mat[3][i]=0; mat[7][i]=0; mat[9][i]=0; mat[18][i]=0; for(o=11;o<15;o++) mat[o][i]=0; i=14; mat[3][i]=0; mat[7][i]=0; mat[8][i]=0; mat[9][i]=0; mat[11][i]=0; for(o=16;o<19;o++) mat[o][i]=0; i=15; mat[3][i]=0; mat[5][i]=0; mat[6][i]=0; mat[7][i]=0; mat[11][i]=0; mat[12][i]=0; mat[16][i]=0; i=16; mat[3][i]=0; mat[5][i]=0; mat[7][i]=0; mat[12][i]=0; mat[16][i]=0; i=17; for(o=1;o<6;o++) mat[o][i]=0; for(o=7;o<11;o++) mat[o][i]=0; for(o=12;o<15;o++) mat[o][i]=0; for(o=16;o<19;o++) mat[o][i]=0; i=18; mat[1][i]=0; mat[5][i]=0; mat[14][i]=0; mat[18][i]=0; mat[10][i]=0; i=19; mat[1][i]=0; mat[5][i]=0; mat[10][i]=0; mat[14][i]=0; mat[18][i]=0; }//fin de la funcion llenado void main() { char a,num,salir; int x,y,val,k,j,l,i; textmode(1); textcolor(2);//luis sandoval clrscr(); gotoxy(9,11); printf("Luis Sandoval"); gotoxy(7,9); printf("Bienvenido a Laberinto V.1.1"); delay(3000); m: ; do { textmode(2); textcolor(RED); clrscr(); gotoxy(30,12); printf ("SI DESEA JUGAR PRESIONE 1"); gotoxy(30,13); printf ("SI DESEA SALIR PRESIONE 2"); gotoxy(30,15); printf (" "); salir=getch(); switch (salir) { case '1': goto e; case '2': goto s; } }while (salir!=1 && salir!=2); e: ; clrscr(); //laberinto gotoxy(30,2); printf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ"); gotoxy(30,3); printf("Û ÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛ"); gotoxy(30,4); printf("Û Û ÛÛÛ Û ÛÛÛ"); gotoxy(30,5); printf("Û ÛÛÛ ÛÛ Û ÛÛÛ"); gotoxy(30,6); printf("Û ÛÛ ÛÛ ÛÛÛÛÛÛÛ Û"); gotoxy(30,7); printf("ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛ"); gotoxy(30,8); printf("ÛÛ Û Û ÛÛ Û"); gotoxy(30,9); printf("ÛÛ Û ÛÛ ÛÛÛ ÛÛ ÛÛÛ Û"); gotoxy(30,10);printf("ÛÛ Û ÛÛ Û ÛÛ Û"); gotoxy(30,11);printf("ÛÛ Û ÛÛÛÛÛÛÛ ÛÛ"); gotoxy(30,12);printf("ÛÛÛ ÛÛÛ Û ÛÛÛÛ Û"); gotoxy(30,13);printf("ÛÛÛ Û ÛÛÛ Û"); gotoxy(30,14);printf("ÛÛÛ ÛÛÛ Û ÛÛÛÛ ÛÛÛ Û"); gotoxy(30,15);printf("Û ÛÛÛ Û Û ÛÛÛ Û"); gotoxy(30,16);printf("ÛÛÛ ÛÛÛ Û ÛÛÛÛ Û"); gotoxy(30,17);printf("ÛÛÛ Û ÛÛÛ ÛÛÛ ÛÛÛ"); gotoxy(30,18);printf("ÛÛÛ Û Û ÛÛÛÛ ÛÛÛ ÛÛÛ"); gotoxy(30,19);printf("Û Û Û Û Û"); gotoxy(30,20);printf("Û ÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛ Û"); gotoxy(30,21);printf("Û ÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛ Û"); gotoxy(30,22);printf(" 1 2 3 4 5 "); //posesiona la figura en una de las entradas do { gotoxy(15,24);printf("Seleccione su entrada (Presione 1, 2, 3, 4 o 5)"); gotoxy(1,25); num=getch(); }while (num!='1' && num!='2' && num!='3' && num!='4' && num!='5'); clrscr(); gotoxy(30,2); printf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ ÛÛÛÛ"); gotoxy(30,3); printf("Û ÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛ"); gotoxy(30,4); printf("Û Û ÛÛÛ Û ÛÛÛ"); gotoxy(30,5); printf("Û ÛÛÛ ÛÛ Û ÛÛÛ"); gotoxy(30,6); printf("Û ÛÛ ÛÛ ÛÛÛÛÛÛÛ Û"); gotoxy(30,7); printf("ÛÛ ÛÛ ÛÛ ÛÛ ÛÛÛÛÛ"); gotoxy(30,8); printf("ÛÛ Û Û ÛÛ Û"); gotoxy(30,9); printf("ÛÛ Û ÛÛ ÛÛÛ ÛÛ ÛÛÛ Û"); gotoxy(30,10);printf("ÛÛ Û ÛÛ Û ÛÛ Û"); gotoxy(30,11);printf("ÛÛ Û ÛÛÛÛÛÛÛ ÛÛ"); gotoxy(30,12);printf("ÛÛÛ ÛÛÛ Û ÛÛÛÛ Û"); gotoxy(30,13);printf("ÛÛÛ Û ÛÛÛ Û"); gotoxy(30,14);printf("ÛÛÛ ÛÛÛ Û ÛÛÛÛ ÛÛÛ Û"); gotoxy(30,15);printf("Û ÛÛÛ Û Û ÛÛÛ Û"); gotoxy(30,16);printf("ÛÛÛ ÛÛÛ Û ÛÛÛÛ Û"); gotoxy(30,17);printf("ÛÛÛ Û ÛÛÛ ÛÛÛ ÛÛÛ"); gotoxy(30,18);printf("ÛÛÛ Û Û ÛÛÛÛ ÛÛÛ ÛÛÛ"); gotoxy(30,19);printf("Û Û Û Û Û"); gotoxy(30,20);printf("Û ÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛ Û"); gotoxy(30,21);printf("Û ÛÛÛ ÛÛÛÛ ÛÛÛ ÛÛÛ Û"); gotoxy(30,22);printf("ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ"); gotoxy(32,24);printf("LABERINTO V.1.1"); switch (num) { case '1': x=31; y=21; break; case '2': x=35; y=21; break; case '3': x=40; y=21; break; case '4': x=44; y=21; break; case '5': x=48; y=21; break; } gotoxy(x,y);printf(""); //Lugar de entrada llenado(); val=0; //comienzo de el movimiento do { f: ; gotoxy(1,25); a=getch(); switch (a) { case 72: l=1; gotoxy(x,y);printf(" "); y=y-1; gotoxy(x,y);printf(""); break; case 80: l=2; gotoxy(x,y);printf(" "); y=y+1; gotoxy(x,y);printf(""); break; case 75: l=3; gotoxy(x,y);printf(" "); x=x-1; gotoxy(x,y);printf(""); break; case 77: l=4; gotoxy(x,y);printf(" "); x=x+1; gotoxy(x,y);printf(""); break; } sound(500); delay(10); nosound(); k=x-30; j=y-2; if (mat[k][j]==1) { val=1; } }while(val!=1); //fin del movimiento if (k==15 && j==0) { for(i=1;i<16;i++) { textmode(1); textcolor(i); clrscr(); gotoxy(9,5); printf("Elaborado por Luis Sandoval"); gotoxy(5,3); printf("Gracias por usar Laberinto V.1.1"); gotoxy(18,12); printf("GANASTE"); delay(500); } goto m; } else { if (mat[k][j]==1) { x=k+30; y=j+2; gotoxy(x,y);printf("Û"); switch(l) { case 1: y=y+1; gotoxy(x,y);printf(""); break; case 2: y=y-1; gotoxy(x,y);printf(""); break; case 3: x=x+1; gotoxy(x,y);printf(""); break; case 4: x=x-1; gotoxy(x,y);printf(""); break; } } goto f; } getch(); s: ; } //void main
|
|
|
|
« Última modificación: 08 Junio 2008, 03:09 por cΔssiΔnі »
|
En línea
|
|
|
|
ҒrεακΠιи∂
Desconectado
Mensajes: 121
|
Buenas
Con un getchar() creo que es suficiente (vos teniendo el Turbo C++ podes usar getch() para que no se vean las teclas)
Saludos, FreakMind
|
|
|
|
|
En línea
|
Connoisseurs of C semantics find C++ inferior to ++C 
|
|
|
ktulucult
Desconectado
Mensajes: 3
|
compa agredesco su ayuda, la uta trate de analizar el programa que me dejaron pero... :'( ... ai un monton de cosas que no entendi.
yo ya ise el laberinto ahora solo quiero mover al mono, y no encuentro la manera de hacerlo, si me pueden ayudar en eso, seria la raja.
ya compas se le agrdece su ayuda vale.
|
|
|
|
|
En línea
|
|
|
|
cΔssiΔnі
Desconectado
Mensajes: 548
|
compa agredesco su ayuda, la uta trate de analizar el programa que me dejaron pero... :'( ... ai un monton de cosas que no entendi.
¡Fue mi culpa! tenia dos codes con nombre similares y no te deje el que de verdad podía servirte, échale un nuevo vistazo nuevamente, lo cambie. Esta muy claro la parte del movimiento del monito creo que ni hace falta que te lo expliquen.
|
|
|
|
« Última modificación: 08 Junio 2008, 03:10 por cΔssiΔnі »
|
En línea
|
|
|
|
ҒrεακΠιи∂
Desconectado
Mensajes: 121
|
Buenas Yo decia algo como #define isOK(n) (n >= 0 && n < N)
struct posicion{ int x; int y; };
int laberinto[N][N];
int main(void) { struct posicion monito = {0,0};
do{ move(&monito); if(tolower(monito.x) != 's') return 0; dibujar(monito); }while(1); }
void dibujarLaberinto(struct posicion pos) { int i = 0, j = 0;
for(; i < N; ++i){ for(; j < N; ++j){ if(pos.x == j && pos.y == i) printf("%c", *); else printf("%c", laberinto[i][j]); } printf("\n"); }
return; }
void move(struct posicion *pos) { printf("Mover monito:\n"); do{ system("cls"); dibujarLaberinto(*pos); switch(tolower(getchar())){ case 'a': if(!isOK(pos->x - 1)){ printf("Error: coordenada fuera de rango\n"); continue } pos->x--; break; case 'd': if(!isOK(pos->x + 1)){ printf("Error: coordenada fuera de rango\n"); continue } pos->x++; break; case 'w': if(!isOK(pos->y +1)){ printf("Error: coordenada fuera de rango\n"); continue } pos->y++; break; case 'x': if(!isOK(pos->x - 1)){ printf("Error: coordenada fuera de rango\n"); continue } pos->x--; break; case 's': pos->x = 's'; return; break; default: printf("Opcion no valida\n"); continue; }while(!isOK(pos->x) && !isOK(pos->y)); } return; }
PD: No esperen que funcione de maravillas y de una porque lo escribi directamente mientras respondia (no compilador ni IDE) Saludos, FreakMind
|
|
|
|
|
En línea
|
Connoisseurs of C semantics find C++ inferior to ++C 
|
|
|
ktulucult
Desconectado
Mensajes: 3
|
uu me sirvio bastante su ayuda comadres, por fin entendi como mover con las putas flechas!!! mm no era tan difiil de pues de todo, muxas grax, ahora me toka otro desafio, pero esto lo hago solo!!! es hacer las TORRES DE HANOI por si alguien lo hace es un juego muy clasico, bueno nus vemos..
muxas grax, KTULUCULT
|
|
|
|
|
En línea
|
|
|
|
|
Páginas: [1]
|
|
|
|