版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/YangZuo_Chester/article/details/77164821
界面极其简陋的C语言五子棋╮( ̄▽ ̄”)╭
#include<stdio.h>
#include<stdlib.h>
int Ground[4][4] = { 0 }; //棋盘全局变量
int Check_ChessBoard(int iY, int iX)//检查是否有赢家
{
int i, j;
//横向
for(j = iY, i = 1;i <= 2;i++)
{
if(Ground[j][i] != Ground[j][i + 1])
{
break;
}
if(i == 2 && Ground[j][i] != 0)
{
return 1;
}
}
//纵向
for(i = iX, j = 1;j <= 2;j++)
{
if(Ground[j][i] != Ground[j + 1][i])
{
break;
}
if(j == 2 && Ground[j][i] != 0)
{
return 1;
}
}
//斜线1 右上->左下
if(iX + iY == 4)
{
for(i = 3, j = 1;i >= 2;--i, ++j)
{
if(Ground[i][j] != Ground[i - 1][j + 1])
{
break;
}
if(i == 2 && Ground[i][j] != 0)
{
return 1;
}
}
}
//斜线2 左上->右下
if(iX == iY)
{
for(i = 1, j = 1;i <= 2;++i, ++j)
{
if(Ground[i][j] != Ground[i + 1][j + 1])
{
break;
}
if(i == 2 && Ground[i][j] != 0)
{
return 1;
}
}
}
return 0;
}
void Check_Legality(int iY, int iX)//检查棋子是否合法
{
while(Ground[iY][iX] != 0 || iX<1 || iX>3 || iY<1 || iY>3)
{
puts("该点已被占用,请重新选择棋子:");
scanf("%d %d", &iX, &iY);
}
}
int main()
{
const int iMax = 9;
int iStep, iTurn;
int iX, iY;
//打印棋盘
printf(" x\ny %d %d %d\n %d %d %d\n %d %d %d\n", Ground[1][1], Ground[1][2], Ground[1][3], Ground[2][1], Ground[2][2], Ground[2][3], Ground[3][1], Ground[3][2], Ground[3][3]);
puts("左上角棋子坐标为(1 1)");
for(iStep = 1;iStep <= iMax;++iStep)
{
iTurn = iStep % 2;
if(iTurn == 1) //Player1 Chess=1 Step 1 3 5 7 9
{
puts("玩家1输入棋子坐标:");
scanf("%d %d", &iX, &iY);
Check_Legality(iY, iX); //合法性判断
Ground[iY][iX] = 1;
system("CLS");//棋盘打印
printf(" x\ny %d %d %d\n %d %d %d\n %d %d %d\n", Ground[1][1], Ground[1][2], Ground[1][3], Ground[2][1], Ground[2][2], Ground[2][3], Ground[3][1], Ground[3][2], Ground[3][3]);
if(Check_ChessBoard(iY, iX) == 1)
{
puts("玩家1胜利!");
system("pause");
return 0;
}
}
if(iTurn == 0) //Player2 Chess=2 Step 2 4 6 8
{
puts("玩家2输入棋子坐标:");
scanf("%d %d", &iX, &iY);
Check_Legality(iY, iX); //合法性判断
Ground[iY][iX] = 2;
system("CLS");//棋盘打印
printf(" x\ny %d %d %d\n %d %d %d\n %d %d %d\n", Ground[1][1], Ground[1][2], Ground[1][3], Ground[2][1], Ground[2][2], Ground[2][3], Ground[3][1], Ground[3][2], Ground[3][3]);
if(Check_ChessBoard(iY, iX) == 1)
{
puts("玩家2胜利!");
system("pause");
return 0;
}
}
}
puts("平局!");
system("pause");
return 0;
}