C语言的源代码是什么?
# include & lttime.h & gt
# include & ltstdio.h & gt
# include & ltstdlib.h & gt
# include & ltconio.h & gt
# include & ltwindows.h & gt
int i,j,r,k;//i,J,R用于循环,K存储随机值。
int m,n;// m和n是当前空位的下标,t标记排序是否成功。
int a[4][4];//存储一个4×4***16数的数组。
void show(无效);//输出数组表
void csh(void);//初始化接口
int?是(作废);?//判断排序是否成功。
void up(作废);?//数字上移至空白位置(空白位置下移)
void down(作废);?//数字下移
void left(无效);?//数字向左移动
void rght(无效);?//数字向右移动。
void inkey(无效);//按键操作
void gtxy(int x,int y);//控制光标移动的函数
int main(void)
{ while(1)
{ csh();
?while(1)
?{ inkey();
?show();
?if ( yes())
?{gtxy(6,12);Printf("你成功了!再来一局y/n?”);打破;}
}
?if(getch( )==?n?)破;
}
返回0;
}
void csh(void)
{?r = 0;
CONSOLE _ CURSOR _ INFO CURSOR _ INFO = { 1,0 };?//下面两行是隐藏光标的设置。
SetConsoleCursorInfo(GetStdHandle(STD _ OUTPUT _ HANDLE),& ampcursor _ info);
for(I = 0;我& lt4;I++) //按顺序给数组A赋值。
for(j = 0;j & lt4;j++)
{ if(I = = 3 & amp;& ampj = = 3)a[I][j]= 0;
不然呢?a[I][j]= 1+r++;
}?
a[3][3]= a[1][1];a[1][1]= 0;?//交换a[3][3]和a[1][1]的值。
m = 1;n = 1;
srand((无符号)time(0));?//初始化随机数生成器
for(r = 0;r & lt500;R++) //打乱数组的值。
{?k = rand()%(4);?//取0-3个随机数,分别代表上、下、左、右四个方向。
开关(k)
{案例0:{ up();?打破;}
案例1:{ down();?打破;}
案例二:{?left();?打破;}
案例三:{?rght();打破;}
}
}
printf("\n\n\t\t?数字拼图”);
printf("\n\t┌──────┬──────┬──────┬──────┐”);
printf("\n\t│?│?│?│?│");
printf("\n\t├──────┼──────┼──────┼──────┤”);
printf("\n\t│?│?│?│?│");
printf("\n\t├──────┼──────┼──────┼──────┤”);
printf("\n\t│?│?│?│?│");
printf("\n\t├──────┼──────┼──────┼──────┤”);
printf("\n\t│?│?│?│?│");
printf("\n\t└──────┴──────┴──────┴──────┘”);
show();
}
无效显示(无效)
{ for(I = 0;我& lt4;i++)
for(j = 0;j & lt4;j++)?//gtxy(7*j+9,2*i+4)是光标到指定位置输出的数字。
{gtxy(7*j+9,2 * I+4);if(a[i][j]==0)printf("?│");
else if(a[I][j]& gt;9)printf("?%d?│",a[I][j]);
else printf("?%d?│",a[I][j]);
}
}
空白油墨(空白)
{ int key
key = getch();
开关(钥匙)
{案例72:{ up();打破;?}
案例80:{ down();打破;}
案例75:{ left();打破;}
案例77: {?rght();?打破;?}
}
}
无效(无效)
{如果(m!=3) ?//移动时考虑空位“0”是否已经在边界。
{ a[m][n]= a[m+1][n];?m++;a[m][n]= 0;}
}
向下无效(无效)
{如果(m!=0)
{ a[m][n]= a[m-1][n];?m-;a[m][n]= 0;}
}
向左无效(无效)
{ if (n!=3)
{ a[m][n]= a[m][n+1];n++;a[m][n]= 0;?}
}
无效权限(无效)
{ if (n!=0)
{ a[m][n]= a[m][n-1];n-;a[m][n]= 0;}
}
整数是(无效)
{ r = 0;
for(I = 0;我& lt4;i++)
for(j = 0;j & lt4;j++)
{ if (a[i][j]!=1+r++)返回(r==16)?1:0;}
}
void gtxy(int x,int y)?//控制光标移动的函数
{ COORD coord
坐标。X = x
坐标。Y = y
SetConsoleCursorPosition(GetStdHandle(STD _ OUTPUT _ HANDLE),coord);
}