#include #include #include #define n 4 void init(int mat[n][n],int m); void stampa(int mat[n][n],int m); int leggifile(int mat[n][n], int m, char filename[]); void stampafile(int mat[n][n], int m, char filename[]); void chiediutente(int indici[4], int m); int sposta(int mat[n][n], int indici[4]); int main() { int mat[n][n]; int indici[4]; srand(time(NULL)); init(mat,n); stampa(mat,n); chiediutente(indici,n); sposta(mat,indici); stampa(mat,n); } int sposta(int mat[n][n], int indici[4]) { int sposta_verticale,sposta_orizzontale; if(mat[indici[2]][indici[3]]!=0) return 0; else { sposta_verticale = ((indici[0]==indici[2]) && (abs(indici[1]-indici[3])==1)) ; sposta_orizzontale = ((indici[1]==indici[3]) && (abs(indici[0]-indici[2])==1)); if(sposta_verticale || sposta_orizzontale) { mat[indici[2]][indici[3]]= mat[indici[0]][indici[1]]; mat[indici[0]][indici[1]]=0; return 1; } else return 0; } } void chiediutente(int indici[4], int m) { do{ printf("inserisci i di partenza: \n"); scanf("%d",&indici[0]); }while(indici[0]<0 || indici[0]>=m); printf("inserisci j di partenza: \n"); scanf("%d",&indici[1]); printf("inserisci i di destinazione: \n"); scanf("%d",&indici[2]); printf("inserisci j di destinazione: \n"); scanf("%d",&indici[3]); } void init(int mat[n][n],int m) { int v[n*n]; int x =m*m; int p_ele; for (int i=0;i