用c语言五子棋大作业,C语言大作业之五子棋游戏设计

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

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;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值