Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <ctime>
- #include <stdlib.h>
- #include <unistd.h>
- #define MAX 50
- using namespace std;
- void preencher(char m[][MAX],int n,int &X,int &Y);
- void imprimir(char m[][MAX],int n);
- int mover(char m[12][MAX],int X,int Y);
- int main()
- {
- int X=0;
- int Y=0;
- int n=12;
- char m[MAX][MAX];
- srand(time(NULL));
- preencher(m,n,X,Y);
- mover(m,X,Y);
- if(mover(m,X,Y)==2){
- cout<<"O Laberinto possui saida"<<endl;
- }
- cout<<"linha @ x"<<X<<endl;
- cout<<"coluna @ y"<<Y<<endl;
- return 0;
- }
- void preencher(char m[][MAX],int n,int &X,int&Y)
- {
- int x=0,c=0,r=0;
- int f=0,F=0,d=0;
- int f1=0;
- for(int i=0; i<n; i++)
- {
- for(int j=0; j<n; j++)
- {
- m[i][j]='#';
- }
- }
- for( int k = 0; k <130; k++ )
- {
- int x = rand()%10 + 1;
- int y = rand()%10 + 1;
- m[x][y] = '.';
- }
- c = rand()%4;
- r = rand()%10+1;;
- if(c ==0 )
- {
- m[0][r] = 'E';
- m[1][r] = '@';
- X=1;
- Y=r;
- m[2][r] = '.';
- }
- if(c==1)
- {
- m[r][0]='E';
- m[r][1] = '@';
- X=r;
- Y=1;
- m[r][2] = '.';
- }
- if(c==2)
- {
- m[11][r] = 'E';
- m[10][r] = '@';
- X=10;
- Y=r;
- m[9][r] = '.';
- }
- if(c==3)
- {
- m[r][11] = 'E';
- m[r][10] = '@';
- X=r;
- Y=10;
- m[r][9] = '.';
- }
- f = rand()%4;
- F = rand()%10+1;;
- if(f==c)
- {
- while(f==c)
- {
- f = rand()%4;
- }
- }
- cout<<f<<endl;
- if(f ==0 )
- {
- m[0][F] = 'F';
- if(m[1][F]!='@')
- {
- m[1][F] = '.';
- }
- m[2][F] = '.';
- }
- if(f==1 )
- {
- m[F][0]='F';
- if(m[F][1]!='@')
- {
- m[F][1] = '.';
- }
- m[F][2]='.';
- }
- if(f==2 )
- {
- m[11][F] = 'F';
- if(m[10][F]!='@')
- {
- m[10][F] = '.';
- }
- m[9][F] = '.';
- }
- if(f==3 )
- {
- m[F][11] = 'F';
- if(m[F][10]!='@')
- {
- m[F][10] = '.';
- }
- m[F][9] = '.';
- }
- }
- int mover(char m[12][MAX],int X,int Y)
- {
- if(m[X][Y]=='F'){
- return 2;
- }
- if(m[X][Y-1]!='#'|| m[X][Y-1]!='E'||m[X][Y-1]!='@')
- {
- m[X][Y-1]='@';
- imprimir(m,12);
- usleep(100000);
- return mover (m,X,Y-1);
- }
- else if(m[X-1][Y]!='#'||m[X-1][Y]!='E'||m[X-1][Y]!='@')
- {
- m[X-1][Y]='@';
- imprimir(m,12);
- usleep(100000);
- return mover (m,X-1,Y);
- }
- else if(m[X][Y+1]!='#'||m[X][Y+1]!='E'||m[X][Y+1]!='@')
- {
- m[X][Y+1]='@';
- imprimir(m,12);
- usleep(100000);
- return mover (m,X,Y+1);
- }
- else if(m[X+1][Y]!='#'||m[X][Y+1]!='E'||m[X][Y+1]!='@')
- {
- m[X+1][Y]='@';
- imprimir(m,12);
- usleep(100000);
- return mover (m,X+1,Y);
- }
- }
- //linha movimentar para cima baixo
- //coluna movimentar esquerda direita
- void imprimir(char m[][MAX],int n)
- {
- for(int i=0; i<n; i++)
- {
- for(int j=0; j<n; j++)
- {
- cout<<m[i][j]<< " ";
- }
- cout<<endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement