该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
6.
//下棋操作
int xiaqi(int sum,stu*arr)
{
int x=40,y=20,i,mark,kk=1;//开始时棋盘光标位置,mark表示该位置是否有棋子,kk表示是否允许悔棋
char b;//获得用户输入字符
while(1)
{
gotoxy(x,y);
b=getch();
//是否悔棋
if(b==' ')
{
if(kk)
{
gotoxy(100,20);
printf("无法悔棋!!\n");
Sleep(300);//延时
gotoxy(100,20);//覆盖掉错误提示信息
printf(" ");
continue;
}
else
{
huiqi(sum,arr);
kk=1;//每次悔棋后设置kk为1,不允许再次悔棋直到下一次落子后
arr[sum-1].x=0;
arr[sum-1].y=0;
arr[sum-1].z=0;
brr[arr[sum-1].y/2][arr[sum-1].x/4]=0;//更新棋盘数组
sum--;
continue;
}
}
//是否落子
if(b=='\r')
{
mark=0;
//落子前先判断该位置有没有棋子
for(i=0;i
{
if(arr[i].x==x&&arr[i].y==y)
{
gotoxy(100,20);
printf("该位置已有棋子!!\n");
Sleep(300);//延时
gotoxy(100,20);//覆盖掉错误提示信息
printf(" ");
mark=1;
break;
}
}
//该位置已有棋子则结束本次落子操作
if(mark)
continue;
//没有棋子则可以落子
if(sum%2==0)
{
printf( "●" );
//记录下白子的坐标和颜色信息
arr[sum].x=x;
arr[sum].y=y;
arr[sum].z=1;
brr[arr[sum].y/2][arr[sum].x/4]=1;//更新棋盘数组
sum++;
//落子后判断白子是否赢
if(sum>8)
{
if(panduan(1,sum,arr))
{
gotoxy(100,20);
printf("白子获胜!!\n");
gotoxy(0,44);
system("pause");
return 1;
}
}
kk=0;//每次落子后令kk=0,允许悔棋
continue;
}
else
{
printf( "○" );
//记录下黑子的坐标和颜色信息
arr[sum].x=x;
arr[sum].y=y;
arr[sum].z=2;
brr[arr[sum].y/2][arr[sum].x/4]=2;//更新棋盘数组
sum++;
//落子后判断黑子是否赢
if(sum>8)
{
if(panduan(2,sum,arr))
{
gotoxy(100,20);
printf("黑子获胜!!\n");
gotoxy(0,44);
system("pause");
return 2;
}
}
kk=0;//每次落子后令kk=0,允许悔棋
continue;
}
}
//若不落子而是上下左右移动
//判断是否来到棋盘边缘
if(x==0&&(b=='a'||b=='A'))
continue;
else if(x==80&&(b=='d'||b=='D'))
continue;
else if(y==0&&(b=='w'||b=='W'))
continue;
else if(y==40&&(b=='s'||b=='S'))
continue;
//上下左右移动
if(b=='w'||b=='W')
y-=2;
else if(b=='s'||b=='S')
y+=2;
else if(b=='d'||b=='D')
x+=4;
else if(b=='a'||b=='A')
x-=4;
}
}