elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Laberinto c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Laberinto c++  (Leído 2,389 veces)
huerjue

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Laberinto c++
« en: 19 Marzo 2018, 21:21 pm »

buenas tengo estos dos laberintos y se supone que con esa condicion que le puse al while deberia salirse e imprirmirse el otro pero solo se come la x y sigue como si nada en el mismo laberinto esto es lo que llevo, pls help


#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
void laberinto(int a[10][25],int f,int c){
   int i,j;
   for(i=0;i<f;i++){
   for(j=0;j<c;j++)
      if(a[j]==0) cout<<" ";
         else if(a[j]==1) cout<<"@";
            else if(a[j]==2) cout<<"x";
               else cout<<"X";
                  cout<<endl;
}


}

void laberinto2(int b[15][45],int fi, int co){
   int l,m;
   for(l=0;l<fi;l++){
   for(m=0;m<co;m++)
      if(b[l][m]==0) cout<<" ";
         else if(b[l][m]==1) cout<<"@";
            else if(b[l][m]==2) cout<<"x";
               else cout<<"X";
                  cout<<endl;
}
}
int main(void){

int a[10][25]={
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1},
{2,0,0,0,0,1,0,1,1,1,0,0,1,1,1,1,0,0,1,1,0,0,0,0,1},
{1,1,0,1,1,0,0,0,1,1,1,1,1,0,0,1,1,1,1,1,1,0,0,0,1},
{1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,0,0,1,0,1,1,1,0,0,1},
{1,1,0,1,1,0,0,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,1,0,1},
{1,1,0,0,0,1,1,1,1,0,0,1,1,1,1,1,0,0,0,3,1,1,1,0,1},
{1,0,0,0,1,1,1,1,1,0,0,0,1,1,1,1,1,0,1,1,2,1,0,1,1},
{1,1,1,0,0,1,1,1,0,1,1,1,0,0,1,1,1,0,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,0,0,0,0,1},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,0,1,1}
};

int b[15][45]={
{1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1},
{2,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1},
{0,1,1,0,1,1,0,0,0,0,1,0,1,0,0,0,1,1,0,1,1,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0,1},
{0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,1,0,0,0,0,0,1},
{0,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,1},
{0,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,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,0,0,1,0,0,1},
{0,0,1,0,0,1,0,0,1,0,0,1,0,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,1,1,1,0,0,1,1,0,1,0,0,0,1,0,1,0,1},
{0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1},
{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,0,0,0,0,1,0,0,3,1},
{0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,1,1,1},                                 
{0,0,0,0,0,0,0,0,0,0,0,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,0,1,1,0,1,0,1,1},
{1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,1,0,3,1},
{1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,0,0,1,0,0,1},
{1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,0,0,0,0,1}

};

int c[20][60]={
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{ 2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1},
{ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,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,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,3},
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,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,1,1,1,1,1,1,1,1,1,1},
{ 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1}
};


int x=0,y=1;
char opc;
do{
system("cls");
laberinto(a,10,25);
opc=getch();
if(opc=='w'&& a[y-1]
  • !=1){a[y]
  • =0;y--;a[y]
  • =2;}
if(opc=='s'&& a[y+1]
  • !=1){a[y]
  • =0;y++;a[y]
  • =2;}
if(opc=='a'&& a[y][x-1]!=1){a[y]
  • =0;x--;a[y]
  • =2;}
if(opc=='d'&& a[y][x+1]!=1){a[y]
  • =0;x++;a[y]
  • =2;}



 }while(opc=a[6][20] &&opc!='x');
 
 
 
do{
system("cls");
laberinto2(b,15,45);
opc=getch();
if(opc=='w'&& b[y-1]
  • !=1){b[y]
  • =0;y--;b[y]
  • =2;}
if(opc=='s'&& b[y+1]
  • !=1){b[y]
  • =0;y++;b[y]
  • =2;}
if(opc=='a'&& b[y][x-1]!=1){b[y]
  • =0;x--;b[y]
  • =2;}
if(opc=='d'&& b[y][x+1]!=1){b[y]
  • =0;x++;b[y]
  • =2;}



 }while(opc=a[0][1] &&opc!='x');
 }
 
 



« Última modificación: 20 Marzo 2018, 00:46 am por huerjue » En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Laberinto c++
« Respuesta #1 en: 20 Marzo 2018, 00:57 am »

Cómo pasar de un laberinto a otro?


En línea

huerjue

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Laberinto c++
« Respuesta #2 en: 20 Marzo 2018, 01:32 am »

Si exacto como paso de un laberinto al otro
En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Laberinto c++
« Respuesta #3 en: 20 Marzo 2018, 01:44 am »

Si supieras lo ambiguo de tú respuesta. Te refieres a cambiar de laberinto una vez llegas a la salida? Intenta ser explícito de lo contrario me aburriré intentando sonsacarte lo que quieres hacer  :huh:
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Laberinto c++
« Respuesta #4 en: 20 Marzo 2018, 01:50 am »

Debes cruzar por la puerta, asumo que es el valor 3, luego de llegar a su cordenada, es cuando debes dibujar el nuevo laberinto y reposicionar  al 'jugador' (en la casilla 'home', que asumo es la 2).

Mejor que usar diferentes arrays (imagina 40 laberintos), es reusar el mismo, para ello, lee los laberintos de fichero. Si no quieres liarte con ficheros, entonces salta a una rutina, donde mediante un switch, copias el contenido del array 'b','c','d', etc.. al array 'a' que es el que manejas en el bucle principal.

En fichero, al comienzo tienes una cabecera:

Código:
estructura file
    entero numLaberintos
    dataLabs lista(numlaberintos)
fin estructura

estructura dataLabs
    entero posicion
    entero x
    entero y
fin estructura

 Primero cuantos laberintos almacena el fichero, luego por cada laberinto, la posición de comienzo de lectura del laberinto, y el par X,Y indicando el tamaño del laberinto (que se usan para calcular los bytes-caracteres a leer).
Podrías incluso añadir por cada laberinto, las posiciones de las casillas 'entrada' y 'salida', de cada laberinto, limitando así (la lectura del) el laberinto a solo dos valores (0-1), pudiendo de ese modo alojar en un solo byte 8 casillas, en vez de solo 1.

A continuación de la cabecera, cada laberinto uno detrás de otro, un tocho de bytes seguidos.

p.d.:
Si los laberintos están interconectados (en vez de ir al siguiente), por ejemplo porque tienen varias puertas, guarda en la cabecera, no solo la posición de cada puerta, sino tambén el índice del laberinto al que se accede desde dicha puerta.
« Última modificación: 20 Marzo 2018, 01:56 am por NEBIRE » En línea

huerjue

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Laberinto c++
« Respuesta #5 en: 20 Marzo 2018, 01:53 am »

Exacto cambiar de laberinto una vez llegue a la salida
En línea

huerjue

Desconectado Desconectado

Mensajes: 5


Ver Perfil
Re: Laberinto c++
« Respuesta #6 en: 20 Marzo 2018, 01:56 am »

o sea debo cruzar por la puerta, que es el valor 3, luego de llegar a su cordenada, es cuando debo dibujar el nuevo laberinto y reposicionar  al 'jugador' en la casilla 'home', que es la 2
En línea

srWhiteSkull


Desconectado Desconectado

Mensajes: 444



Ver Perfil WWW
Re: Laberinto c++
« Respuesta #7 en: 20 Marzo 2018, 02:10 am »

Mete los tres arrays en un array de punteros denominado niveles y con una variable denominada nivel la incrementas o seleccionas el nivel. Ejemplo :

   int a[] = { 1,2,3 };
   int b[] = { 4,5,6 };
   int c[] = { 7,8,9 };

   int * niveles[] = { &a[0], &b[0], &c[0] };
   unsigned char nivel = 0;

   cout << niveles[nivel][0] << endl; // accedemos al primer nivel (a) y leemos su primer elemento (1)

   nivel++; // pasamos nivel

   cout << niveles[nivel][0] << endl; // accedemos al segundo nivel (b) y leemos su primer elemento (4)
En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Laberinto c++
« Respuesta #8 en: 20 Marzo 2018, 02:14 am »

Si... esa es la idea.

Fíjate que hay un laberinto con más de una puerta de salida... he contado 3 en el del medio (int b[15][45]={... 3 ... 3 ...3

...si no hay más laberintos, usa una puerta para acceder a cada uno d elos 3 presentados... lógicamente la que lleva de nuevo a ese mismo, que sea una puerta (salida) alejada de la entrada...

Relee, de nuevo todo mi mensaje, lo edité luego, para hacer alguna aclaración más...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Laberinto en Php.
PHP
n3fisto 2 4,282 Último mensaje 20 Marzo 2010, 15:26 pm
por n3fisto
Backtracking - Laberinto
Programación C/C++
hadree 3 6,657 Último mensaje 23 Noviembre 2010, 03:08 am
por do-while
Juego del laberinto C
Programación C/C++
Rpgmakero 4 10,260 Último mensaje 4 Marzo 2011, 01:50 am
por N0body
Funciones en laberinto en C!
Programación C/C++
lalintians 2 2,801 Último mensaje 11 Mayo 2011, 03:10 am
por lalintians
Laberinto C++
Programación C/C++
JCanseco7 4 3,310 Último mensaje 30 Septiembre 2016, 11:05 am
por Nucleorion
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines