кто поможет описать код с++??пятнашки))
#include
#include
#include
#include
#define MENTIONprintf("Enter 'j', 'i', 'l' or 'k' to move the empty cell left, up, right or down correspondingly, or 'q' to exit: \n\n");
int** field;
int emptyCell_x, emptyCell_y;
//------------------
void init()
{
int x,y, i,j;
srand(time(NULL));
for(i=1; i<=15;)
{
x=rand()%4; y=rand()%4;
if(field[x][y] == 0) field[x][y] = i++;
}
for(i=0; i<4; i++) //to find the empty cell
for(j=0; j<4; j++)
if(field[j] == 0)
{
emptyCell_x=j; emptyCell_y = i; return;
}
}
//---------------------
void printField()
{
int i,j;
for(i=0; i<4; i++)
{
for(j=0; j<4; j++)
if(field[j]) printf("=", field[j]);
else printf(" _");
printf("\n\n");
}
printf("\n\n");
}
//-----------------------
int notEndYet()
{
int i,j;
for(i=0; i<3; i++)
for(j=0; j<4; j++)
if(field[j] != 4*i+j+1) return 0; //go on play
if(field[0][3] != 13) return 0;
return 1; //victory!
}
//---------------allows move the emply cell
int move()
{
char c;
while(1)
{
c = getch();
switch(c)
{
case 'j':
if(emptyCell_x==0)
{
printf("Not valid move.\n\n");
break;
}
else
{
field[emptyCell_x][emptyCell_y] = field[emptyCell_x-1][emptyCell_y];
field[emptyCell_x-1][emptyCell_y] = 0;
emptyCell_x--;
return 1;
}
case 'i':
if(emptyCell_y==0)
{
printf("Not valid move.\n\n");
break;
}
else
{
field[emptyCell_x][emptyCell_y] = field[emptyCell_x][emptyCell_y-1];
field[emptyCell_x][emptyCell_y-1] = 0;
emptyCell_y--;
return 2;
}
case 'l':
if(emptyCell_x==3)
{
printf("Not valid move.\n\n");
break;
}
else
{
field[emptyCell_x][emptyCell_y] = field[emptyCell_x+1][emptyCell_y];
field[emptyCell_x+1][emptyCell_y] = 0;
emptyCell_x++;
return 3;
}
case 'k':
if(emptyCell_y==3)
{
printf("Not valid move.\n\n");
break;
}
else
{
field[emptyCell_x][emptyCell_y] = field[emptyCell_x][emptyCell_y+1];
field[emptyCell_x][emptyCell_y+1] = 0;
emptyCell_y++;
return 4;
}
case 'q': exit(1);
default: MENTION
}
}
}
//-----------------main function
void main()
{
field = (int**)calloc(4, sizeof(int*));
for(int i=0; i<4; i++)
field = (int*)calloc(4, sizeof(int));
doinit(); while(notEndYet());
MENTION
printField();
while(!notEndYet())
{
move();
printField();
}
printf("\nYou win!\n"); getch();