Salve qualcuno puo' spiegarmi questo codice? Grazie
int m[4][4] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12},
{13,14,15,0}
};
srand((unsigned)time(NULL));
int i,j,k,jj,kk;
int num,mem;
printf("Questo programma compone il gioco del 15\n\n");
//mischio
num = (rand() % 100)+1;
for (i = 0 ; i < num ; i++)
{
k = rand() % 4;
j = rand() % 4;
kk = rand() % 4;
jj = rand() % 4;
mem = m[k][j];
m[k][j] = m[kk][jj];
m[kk][jj] = mem;
}
printf("Inserendo uno dei numeri adiacenti allo spazio, puoi mischiare la matrice!\n\n\n");
int mosse=0;
int *contmosse;
while(num)
{
//disegno mappa
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(m[i][j]==0)
printf(" ");
else
printf(" %2d ",m[i][j]);
}
printf("\n\n");
}
printf("\nInserisci il numero (0 per terminare la mischia):");
scanf("%d",&num);
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
{
if(m[i][j] != num) continue;
//spostamento
kk = i;
jj = j;
if (j > 0 && !m[i][j - 1])
--jj;
else if ( j < 4 && !m[i][j + 1] )
++jj;
else if ( i > 0 && !m[i - 1][j] )
--kk;
else if ( i < 4 && !m[i + 1][j] )
++kk;
mem = m[i][j];
m[i][j] = m[kk][jj];
m[kk][jj] = mem;
goto contmosse;
}
}
contmosse:
++mosse;
system("cls");
}//main loop
printf("Hai risolto il Gioco del 15 in %d mosse!\n\n", mosse);
}