#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIM 30
#define N 0
#define S 1
#define E 2
#define O 3
int main()
{
char laberintox[DIM][DIM];
int direcc;
int movimiento=0;
int x=0;
int y=0;
srand(time(NULL));
for(y=0;y<DIM;y++)
{
for(x=0;x<DIM;x++)
{
if((( y>0 && y<(DIM-1) && x>0 && x<(DIM-1) ) && (rand()%5<3)) || (x==(DIM-2)&&y==(DIM-1)))
{
laberintox[y][x]=' ';
}
else
{
laberintox[y][x]='Û';
}
}
}
x=0;
y=0;
for(y=0;y<DIM;y++)
{
for(x=0;x<DIM;x++)printf("%c", laberintox[y][x]);
{
printf("\n");
}
}
x=1;
y=1;
direcc=1;
laberintox[1][1]='Ï';
for(movimiento=0;(!(x==(DIM-2)&&y==(DIM-1)))&&movimiento<=((DIM-1)*(DIM-1))&&x<DIM&&y<DIM;movimiento++)
{
switch(direcc)
{
case 0:
{
if(laberintox[y][x+1]==' '||laberintox[y][x+1]=='Ï')
{
x=x+1;//ESTE
direcc=E;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y-1][x]==' '||laberintox[y-1][x]=='Ï')
{
y=y-1;//NORTE
direcc=N;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y][x-1]==' '||laberintox[y][x-1]=='Ï')
{
x=x-1;//OESTE
direcc=O;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y+1][x]==' '||laberintox[y+1][x]=='Ï')
{
y=y+1;//SUR
direcc=S;
laberintox[y][x]='Ï';
break;
}
}
case 1:
{
if(laberintox[y][x-1]==' '||laberintox[y][x-1]=='Ï')
{
x=x-1;//OESTE
direcc=O;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y+1][x]==' '||laberintox[y+1][x]=='Ï')
{
y=y+1;//SUR
direcc=S;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y][x+1]==' '||laberintox[y][x+1]=='Ï')
{
x=x+1;//ESTE
direcc=E;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y-1][x]==' '||laberintox[y-1][x]=='Ï')
{
y=y-1;//NORTE
direcc=N;
laberintox[y][x]='Ï';
break;
}
}
case 2:
{
if(laberintox[y+1][x]==' '||laberintox[y+1][x]=='Ï')
{
y=y+1;//SUR
direcc=S;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y][x+1]==' '||laberintox[y][x+1]=='Ï')
{
x=x+1;//ESTE
direcc=E;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y-1][x]==' '||laberintox[y-1][x]=='Ï')
{
y=y-1;//NORTE
direcc=N;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y][x-1]==' '||laberintox[y][x-1]=='Ï')
{
x=x-1;//OESTE
direcc=O;
laberintox[y][x]='Ï';
break;
}
}
case 3:
{
if(laberintox[y-1][x]==' '||laberintox[y-1][x]=='Ï')
{
y=y-1;//NORTE
direcc=N;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y][x-1]==' '||laberintox[y][x-1]=='Ï')
{
x=x-1;//OESTE
direcc=O;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y+1][x]==' '||laberintox[y+1][x]=='Ï')
{
y=y+1;//SUR
direcc=S;
laberintox[y][x]='Ï';
break;
}
else if(laberintox[y][x+1]==' '||laberintox[y][x+1]=='Ï')
{
x=x+1;//ESTE
direcc=E;
laberintox[y][x]='Ï';
break;
}
}
}
}
if (!(x==(DIM-2)&&y==(DIM-1)))
{
printf("\n\n\n No tiene salida :c");
}
else
{
printf("\n\n\n Encontre la salida!!");
}
printf("\n\n");
for(y=0;y<DIM;y++)
{
for(x=0;x<DIM;x++)
{
printf("%c", laberintox[y][x]);
}
printf("\n");
}
return 0;
}
Comentarios sobre la versión: 20171114 (1)