Código
#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(); }