laberinto c++
En este ejemplo de c++ mostrare el juego de laberinto en el cual
el camino no contendrá nada los obstáculos seran # y el juego
correrá automáticamente osea que no lo manejaremos nosotros
si no que automaticamente tendra que llegar al final, final que
se reconocera teniendo una F,
no sueñes que empesaremos asiendo como el formato de la imagen xd
mostrando un ejemplo diseñandolo podria ser asi:
______
|I |
|# ## |
| #F |
|# |
--------
laberinto en el cual automaticamente debe lograr pegar la I con la F sin poder
pasar por los #.
aqui el codigo:
el camino no contendrá nada los obstáculos seran # y el juego
correrá automáticamente osea que no lo manejaremos nosotros
si no que automaticamente tendra que llegar al final, final que
se reconocera teniendo una F,
no sueñes que empesaremos asiendo como el formato de la imagen xd
mostrando un ejemplo diseñandolo podria ser asi:
______
|I |
|# ## |
| #F |
|# |
--------
laberinto en el cual automaticamente debe lograr pegar la I con la F sin poder
pasar por los #.
aqui el codigo:
#include "Juego.h"
//#include "Movimientos.h"
#include <cstdlib>
#include <iostream>
using namespace std;
void Juego::Jugar()
{int alt=1,anch,paredes,X1,Y1,mm=1,X1rand,Y1rand;
Movimientoz *s[100][100];
//empesando se pide la altura que se desea tener
while(alt<11 || alt>22)
{
cout<<"ingrese altura(11 a 22) ";
cin>>alt;
}
//luego se pide la anchura que tendra
while(anch<39 || anch>78)
{
cout<<" ingrese anchura(39 a 78) "<<endl;
cin>>anch;
}
s[alt+3][anch+3];
//creando la dimension de movimientos que tendra el laberinto
for(int i=1; i<=alt; i++){
for(int o=1; o<=anch; o++){
s[i][o]=new Movimientoz();
}
}
for(int i=1; i<=alt; i++){
for(int u=1; u<=anch; u++){
s[i][u]->x=1;
}
}
//ahora se le pide ingresar la cantidad de paredes(#) que desea que salgan
while(paredes<10 || paredes>50)
{
cout<<" ingrese la cantidad de paredes de 10 a un maximo de 50 )"<<endl;
cin>>paredes;
}
//ahora se le pide ingresar el punto de la fila inicial
//y columna inicial, puntos que no pueden ser mayor a la altura
// o anchura porque
//estaria a fuera del laberinto por lo mismo debe
//ser mayor a 1
do{
cout<<"ingrese punto de inicio de la fila que no pase de "<<alt<<" no menor a 1 "<<endl;
cin>>X1; }while(X1>alt);
do{
cout<<"ingrese punto de inicio de la columna que no pase de "<<anch<<" y que no sea menor a 1"<<endl;
cin>>Y1;
}while(Y1>anch);
s[X1][Y1]->x=4;
cout<<"Generando salida "<<endl;
int xxp=1;
X1rand=(1+rand()%alt);
Y1rand=(1+rand()%anch);
s[X1rand][Y1rand]->x=3;//asignandole el lugar de la salida(F)
int PD[51],DP[51],OO=1;
while(OO<=paredes)
{
PD[OO]=(1+rand()%alt);
DP[OO]=(1+rand()%anch);
OO++;
}
for(int i=1; i<=paredes; i++)
{
s[PD[i]][DP[i]]->x=2;//asignandole lugar a las paredes(#)
}
int XR,YR;
XR=X1;
YR=Y1;
while(X1!=X1rand||Y1!=Y1rand){//1=
system("cls");
//imprimiendo el laberinto en el cual
//" " osea el espacio es el camin disponible
// # son paredes por las cuales nmo se pueden pasar
// F es la salida a la cual sedebe llegar
//I es el inicio desde donde se empiesa
for(int i=1; i<=alt; i++){
for(int u=1; u<=anch; u++){
if(s[i][u]->x==1){cout<<" ";};//camino
if(s[i][u]->x==2){cout<<"#";};//paredes
if(s[i][u]->x==3){cout<<"F";};//salida
if(s[i][u]->x==4){cout<<"I";};
}cout<<endl;
}//fin fore
cout<<endl;cout<<endl;cout<<endl;
//a continiacion viene un conjunto de if
//con los cuales se compara movimientos:
//de X1 con X1rand y Y1 con Y1rand
if(X1<X1rand)
{X1=X1+1;if(X1>alt){X1=X1-1;}
if(s[(X1)][Y1]->x==2){if(Y1<Y1rand){s[X1][Y1+1]->x=4;}
if(s[(X1)][Y1]->x==2){if(Y1<Y1rand){s[X1][Y1+1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1][Y1-1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1+1][Y1+1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1+1][Y1]->x=4;}
}else {s[X1][Y1]->x=4;}
}
}
//
if(X1>X1rand
)
{X1=X1-1;if(X1<1){X1=X1+1;}
//
if(s[(X1)][Y1]->x==2){if(Y1<Y1rand){s[X1][Y1+1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1][Y1-1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1+1][Y1+1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1+1][Y1]->x=4;}
}else { s[X1][Y1]->x=4;}
}
if(Y1<Y1rand
)
{Y1=Y1+1;if(Y1>anch){Y1=Y1-1;}
//
if(s[(X1)][Y1]->x==2){if(Y1<Y1rand){s[X1+1][Y1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1-1][Y1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1+1][Y1+1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1][Y1+1]->x=4;}
}else { s[X1][Y1]->x=4;}
}
if(Y1>Y1rand
)
{Y1=Y1-1;if(Y1<1){Y1=Y1+1;}
if(s[(X1)][Y1]->x==2){if(Y1<Y1rand){s[X1+1][Y1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1-1][Y1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1+1][Y1+1]->x=4;}
if(s[(X1)][Y1]->x==2){s[X1][Y1+1]->x=4;}
}else { s[X1][Y1]->x=4;}
}
//fin de movimiento
if(X1==X1rand && Y1==Y1rand){cout<<"llego al final"<<endl;}
};
mm++;
return;
}
Descargar ejemplo
verusQconssaSaint Paul Michael Erickson Total Commander 10.50
ResponderBorrarNik Collection by DxO 5.1.0
Tenorshare 4DDiG 9.1.1.2
Superluminal Stardust 1.6.0b
gregnotinglib