elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Ingresar Registrarse
12 Octubre 2008, 07:45  



+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++
| | |-+  AYUDA CON UN LABERINTO!! URGENTE:
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Imprimir
Autor Tema: AYUDA CON UN LABERINTO!! URGENTE:  (Leído 435 veces)
ktulucult

Desconectado Desconectado

Mensajes: 3


Ver Perfil
AYUDA CON UN LABERINTO!! URGENTE:
« en: 22 Marzo 2008, 17:03 »


 Hola compañeros soy nuevo en este foro y ya les presento mi primera duda :D 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 Desconectado

Mensajes: 548


Ver Perfil
Re: AYUDA CON UN LABERINTO!! URGENTE:
« Respuesta #1 en: 22 Marzo 2008, 17:43 »

Código
 
/************** 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 Desconectado

Mensajes: 121



Ver Perfil
Re: AYUDA CON UN LABERINTO!! URGENTE:
« Respuesta #2 en: 22 Marzo 2008, 18:50 »

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 Desconectado

Mensajes: 3


Ver Perfil
Re: AYUDA CON UN LABERINTO!! URGENTE:
« Respuesta #3 en: 23 Marzo 2008, 05:43 »


 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 Desconectado

Mensajes: 548


Ver Perfil
Re: AYUDA CON UN LABERINTO!! URGENTE:
« Respuesta #4 en: 23 Marzo 2008, 17:31 »

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 Desconectado

Mensajes: 121



Ver Perfil
Re: AYUDA CON UN LABERINTO!! URGENTE:
« Respuesta #5 en: 23 Marzo 2008, 21:40 »

Buenas

Yo decia algo como

Código:
#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 Desconectado

Mensajes: 3


Ver Perfil
Re: AYUDA CON UN LABERINTO!! URGENTE:
« Respuesta #6 en: 31 Marzo 2008, 01:59 »

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] Ir Arriba Imprimir 
Ir a:  







Consolas     La Web de Goku     MilW0rm     MundoDivx

Hispabyte     Truzone     TodoReviews     ZonaPhotoshop

hard-h2o modding    Foros de ayuda    Yashira.org    Videojuegos    indetectables.net   

Noticias Informatica    Seguridad Informática    ADSL    Foros en español    eNYe Sec

Todas las webs afiliadas están libres de publicidad engañosa.

Powered by SMF 1.1.6 | SMF © 2006-2008, Simple Machines LLC
Free counter and web stats