Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - JCanseco7

#1
Programación C/C++ / Re: Laberinto C++
30 Septiembre 2016, 08:30 AM
Bueno, gracias por la ayuda, hice varias modificaciones y ahora ya consigo que me genere un camino, pero ahora que lo ejecuto no me muestra automáticamente la solución.
Código (cpp) [Seleccionar]
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

int lab[12][12];
int iniciocol=0, iniciofila=0, caminfila=0, camincol=1, decidir=0, pared=1, espacio=0, yapaso=2, novolver=3;

main(){
/*se asignan paredes*/
   for(int i=0; i<12; i++){
    for(int j=0; j<12;j++){
lab[i][j] = pared;
         }
      }

/*se genera el inicio*/
srand(time(NULL));
iniciofila = (1+rand()%(6-1));

/*Asignamos la entrada y declaramos el pasillo de entrada*/
lab[iniciofila][iniciocol] = espacio;
caminfila = iniciofila;
lab[caminfila][camincol] = espacio;

   /*Creamos el camino*/
while(caminfila < 11 && camincol < 11){
decidir = rand()%3;
if (decidir == 0){ /*camino se fabrica a la izquierda*/
camincol = camincol-1;
if(camincol < 1){
camincol = camincol+1;
} else {
lab[caminfila][camincol] = espacio;
camincol++;
}
}

     if(decidir ==1 ) { /*camino para abajo*/
caminfila++;
lab[caminfila][camincol] = espacio;
} else if (decidir == 2){   /*camino a la derecha*/
camincol++;
lab[caminfila][camincol] = espacio;
}

}

/*Se crean caminos falsos*/
for(int i=1; i<11; i++){
for(int j=1;j<11;j++){
if (lab[i][j] != espacio) {
decidir = rand()%2;
if(decidir==0){
lab[i][j] = espacio;
}
}
}
}

/*Se resuelve el laberinto*/
lab[iniciofila][iniciocol] = yapaso;
caminfila = iniciofila;
camincol = iniciocol;
while(caminfila<12){
if(lab[caminfila+1][camincol] == espacio){
caminfila++;
lab[caminfila][camincol] = yapaso;
} else if(lab[caminfila][camincol+1] == espacio){
camincol++;
lab[caminfila][camincol] = yapaso;
} else if(lab[caminfila-1][camincol] == espacio){
caminfila--;
lab[caminfila][camincol] = yapaso;

} else if(lab[caminfila][camincol-1] == espacio){
camincol--;
lab[caminfila][camincol] = yapaso;
} else if((lab[caminfila+1][camincol] != espacio) && (lab[caminfila][camincol+1] != espacio) && (lab[caminfila-1][camincol] != espacio)){
lab[caminfila][camincol] = novolver;
camincol--;
} else if((lab[caminfila+1][camincol] != espacio) && (lab[caminfila][camincol+1] != espacio) && (lab[caminfila][camincol-1] != espacio)){
lab[caminfila][camincol] = novolver;
caminfila--;
} else if((lab[caminfila+1][camincol] != espacio) && (lab[caminfila][camincol+1] != espacio) && (lab[caminfila-1][camincol] != espacio)){
lab[caminfila][camincol] = novolver;
camincol++;
} else if((lab[caminfila-1][camincol] != espacio) && (lab[caminfila][camincol+1] != espacio) && (lab[caminfila-1][camincol] != espacio)){
lab[caminfila][camincol] = novolver;
caminfila++;
}
}


   /*muestra el laberinto*/
   for(int i=0; i<12; i++){
    for(int j=0; j<12;j++){
if(lab[i][j] == pared){
cout<<"#";
cout<<" ";
} else if((lab[i][j] == espacio) || lab(lab[i][j] == novolver)) {
cout<<".";
cout<<" ";
} else if (lab[i][j] == yapaso){
cout<<"X";
cout<<" ";
}
  }
    cout<<"\n";
   }
   getchar();
}
#2
Programación C/C++ / Laberinto C++
25 Septiembre 2016, 08:03 AM
¿Alguien me podría ayudar con este código?

Necesito que se genere solo una entrada y una salida.
En el código actual se genera más de un camino a la vez y necesito que sea solo uno conectado con la entrada y salida.  :-\

Agrego: Estoy compilando en Borland C++

Código (cpp) [Seleccionar]
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
#include <stdlib.h>
#include <time.h>

int lab[11][11];
int iniciocol=0, iniciofila=0, fincol=0, finfila=0, caminfila=0, camincol=0, decidir=0, pared=1, espacio=0;

main(){
/*se asignan paredes*/
  for(int i=0; i<12; i++){
   for(int j=0; j<12;j++){
lab[i][j] = pared;
        }
     }
   
 
/*se genera el inicio*/
  srand(time(NULL));
  iniciocol = (1+rand()%(11-1));
  if (iniciocol == 0) {
    iniciofila = (1+rand()%(11-1));
  } else {
    iniciofila = 0;
  }

  /*Asignamos la entrada y salida y declaramos para empezar a crear el camino*/
  lab[iniciofila][iniciocol] = espacio;
  caminfila = iniciofila++;
  camincol = iniciocol;
  lab[caminfila][camincol] = espacio;
 
  /*Creamos el camino*/
while(caminfila < 11 && camincol < 11){
decidir = rand()%4;
if (decidir == 0){ /*camino se fabrica a la izquierda*/
camincol = camincol-1;
lab[caminfila][camincol] = espacio;
} else if(decidir ==1 ) { /*camino para abajo*/
caminfila++;
lab[caminfila][camincol] = espacio; /*camino a la derecha*/
} else if (decidir == 2){
camincol++;
lab[caminfila][camincol];
}

}

  /*muestra el laberinto*/
  for(int i=0; i<12; i++){
    for(int j=0; j<12;j++){
if(lab[i][j] == pared){
cout<<"#";
cout<<" ";
} else {
cout<<".";
cout<<" ";
}
     }
  cout<<"\n";
  }
  getchar();
}