#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void printScacchiera(char scacchiera[][16] , int n, int m);//prototipo function che stampa a video la scacchiera
void genera_posi_casuale(char scacchiera[][16], int x, int y,int nx,int ny);// prototipo funzione genera posizione ladro e guardia casualmente
void comando(char scacchiera[][16],int x,int y ,int nx, int ny);//prototipo funzione che manovra ladro
void main()
{
int nx,ny,x,y;
char scacchiera[16][16]= {
{ 'm','m','m','m','m','m','m','m','m','m','m','m','m ','m','m','m'},
{ 'm',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ','m','m','m','m','m','m','m','m','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ','m',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ',' ',' ',' ',' ','m',' ',' ',' ','m','m','m',' ','m'},
{ '.',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ '.',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ '.',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm',' ',' ',' ',' ',' ',' ','m',' ',' ',' ',' ',' ',' ',' ','m'},
{ 'm','m','m','m','m','m','m','m','m','m','m','m','m ','m','m','m'}};
srand(time(NULL)); /*permette la lettura dell'orologio interno del sistema ,
ottenendo automaticamente un valore sempre diverso per il seme*/
genera_posi_casuale(scacchiera, x, y,nx,ny); // chiamata procedura
}
//procedura che permette movimento ladro da parte dell'utente
void comando(char scacchiera[][16],int x ,int y ,int nx, int ny){
int n ,m ;
char com;
// muove il ladro finche non esce da labirinto o non viene preso dalla guardia
while(scacchiera[x][y] != scacchiera[13][0] && scacchiera[x][y] != scacchiera[12][0] && scacchiera[x][y] != scacchiera[11][0]){
printf("\n digitare un comando w = avanti - a = sinsitra - d = destra - z = indietro \n ");
scanf("%c",&com);
printf("\n");
switch(com){
case 'w': //va avanti
x--;
if(scacchiera[x][y] != 'm'){
scacchiera[x+1][y] = ' ';//cancella posizione precedente
scacchiera[x][y] = 'L';
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
printf("\n");
}
//se incontri muro rimani in quella posizione
else{
x++;
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
}
break;
case 'a'://va a sinistra
y--;
if(scacchiera[x][y] != 'm'){
scacchiera[x][y+1] = ' ';//cancella posizione precedente
scacchiera[x][y] = 'L';
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
printf("\n");
}
//se incontri muro rimani in quella posizione
else{
y++;
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
}
break;
case 'd'://va a destra
y++;
if(scacchiera[x][y] != 'm'){
scacchiera[x][y-1] = ' ';//cancella posizione precedente
scacchiera[x][y] = 'L';
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
printf("\n");
}
//se incontri muro rimani in quella posizione
else{
y--;
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
}
break;
case 'z'://va indietro
x++;
if(scacchiera[x][y] != 'm'){
scacchiera[x-1][y] = ' '; //cancella posizione precedente
scacchiera[x][y] = 'L';
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
printf("\n");
}
//se incontri muro rimani in quella posizione
else{
x--;
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printScacchiera(scacchiera,n,m);//chiamata void function - stampa la scacchiera
}
break;
}//chiude switch case
}//chiude while
printf("HAI VINTO .... SEI RIUSCITO A SCAPPARE \n \n");
}
//procedura che genera posizione ladro e guardia casualmente
void genera_posi_casuale(char scacchiera[][16], int x, int y,int nx ,int ny)
{
int i,n,m;
for (i=0;i<1;i++)//ciclo che viene eseguito una sola volta tanto quanto la posizione da generare.
{
/* genera a caso una posizione
per il ladro */
do
{
x = 1+rand()%15;
y = 1+rand()%15;
}
while(scacchiera[x][y]=='m');
scacchiera[x][y] = 'L';
printf("\n LE COORDINATE DEL LADRO SONO %d : %d \n",x,y);
printf("\n\n");
}
for (i=0;i<1;i++)//ciclo che viene eseguito una sola volta tanto quanto la posizione da generare.
{
/* genera a caso una posizione
per la guardia */
do
{
nx = 1+rand()%15;
ny = 1+rand()%15;
}
while(scacchiera[nx][ny]=='m');
scacchiera[nx][ny] = 'G';
printf("\n LE COORDINATE DELLA GUARDIA SONO %d : %d \n",nx,ny);
printf("\n\n");
}
printScacchiera(scacchiera,n,m);
comando( scacchiera, x, y,nx,ny);
}
//procedura stampa scacchiera
void printScacchiera(char scacchiera[][16] , int n, int m)
{
int i,j;
n=16;
m=16;
//ciclo for che mi permette di scorrere le righe
for (i=0;i<n;i++){
{
for (j=0;j<m;j++)//ciclo for che mi permette di scorrere le colonne
printf(" %c",scacchiera[i][j]);
printf("\n");
}
}
}