Please explain me each sentence in this code, Thanks.
Code:
#include <stdio.h>
#include <stdlib.h>
void swap(int *a, int *b)
{
int c = *a;
*a = *b;
*b = c;
}
void draw(int board[3][3])
{
int i, j;
printf("\n");
for(i = 0; i < 3; i++)
for(j = 0; j < 3; j++)
{
if(board[i][j] != 0)
printf(" |%d|", board[i][j]);
else
printf(" | |");
if(j == 2)
printf("\n ----------- \n");
}
}
int main()
{
int board[3][3], *p = (int*)board;
int i, j, c, x, ei, ej;
//initialization
for(i = 0, c = 8; i < 3; i++)
for(j = 0; j < 3; j++, c--)
board[i][j] = c;
board[ei = 2][ej = 2] = 0;
// check move //
c = 0;
while(c < 8)
{
draw(board);
printf(" Move ");
x = getchar() - 49 + 1;
if((x < 10) && (x > 0))
printf("%d\n",x);
else
{
printf("bad move\n");
continue;
}
if(ei > 0 && board[ei - 1][ej] == x)
{
swap(&board[ei][ej], &board[ei - 1][ej]);
ei--;
}
else if(ei < 2 && board[ei + 1][ej] == x)
{
swap(&board[ei][ej], &board[ei + 1][ej]);
ei++;
}
else if(ej > 0 && board[ei][ej - 1] == x)
{
swap(&board[ei][ej], &board[ei][ej - 1]);
ej--;
}
else if(ej < 2 && board[ei][ej + 1] == x)
{
swap(&board[ei][ej], &board[ei][ej + 1]);
ej++;
}
else
{
printf("bad move\n");
continue;
}
// check win //
for(c = 0; c < 8; c++)
if(p[c] != c + 1)
break;
}
draw(board);
printf("\n You Win!");
getchar();
return 0;
}