#include
#include
#include
#define rows 3
#define lows 3 //定义二维数组的行和列
void display(char chessBoard[rows][lows]); //打印棋盘
void Peo_Play(char chessBoard[rows][lows]); //人下棋
void Com_Play(char chessBoard[rows][lows]); //电脑下棋
int winner(char chessBoard[rows][lows]); //胜利者
void init(char chessBoard[rows][lows]) //初始化
{
int i=0;
int j=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
chessBoard[i][j]=' ';
}
}
display(chessBoard); //调用打印函数
for(i=0;i<3;i++)
{
Peo_Play(chessBoard); //打印人下的棋
Com_Play(chessBoard); //打印电脑下的题
}
winner(chessBoard); //调用胜利者的函数
}
void display(char chessBoard[rows][lows]) //打印棋盘
{
int i=0;
for(i=0;i<3;i++)
{
printf(" %c | %c | %c \n",chessBoard[i][0],chessBoard[i][1],chessBoard[i][2]);
if(i!=2)
printf("---|---|---\n");
}
}
void Peo_Play(char chessBoard[rows][lows]) //人下棋
{
int i=0;
int j=0;
printf("请输入你要下的位置->:");
scanf("%d,%d",&i,&j);
system("cls");
while(chessBoard[i][j]!=' ') //棋盘位置不为空
{
if((i<0)||(i>2)||(j<0)||(j>2)) //超出二维数组的范围
{
printf("ERROR:你输入的位置信息有误!");
}
}
chessBoard[i][j]='X'; //将人的下棋位置赋值为X
display(chessBoard); //在棋盘中打印
}
void Com_Play(char chessBoard[rows][lows]) //电脑下棋
{
int i=0;
int j=0;
printf("电脑下棋中...\n");
while(chessBoard[i][j]!=' ') //棋盘位置不为空
{
i=rand()%3;
j=rand()%3; //产生小于3的随机数
}
system("cls");
chessBoard[i][j]='Y';
display(chessBoard); //在棋盘中打印
}
int winner(char chessBoard[rows][lows]) //胜利者
{
int i=0;
if((chessBoard[0][0]==chessBoard[1][1])&&(chessBoard[1][1]==chessBoard[2][2]))//判断正对角线
{
if(chessBoard[1][1]=='X')
{
printf("祝贺你,你赢了!\n");
return 1;
}
if(chessBoard[1][1]=='Y')
{
printf("电脑赢了!\n");
return 1;
}
}
if((chessBoard[0][2]==chessBoard[1][1])&&(chessBoard[1][1]==chessBoard[2][0]))//判断反对角线
{
if(chessBoard[1][1]=='X')
{
printf("祝贺你,你赢了!\n");
return 1;
}
if(chessBoard[1][1]=='Y')
{
printf("电脑赢了!\n");
return 1;
}
}
for(i=0;i<3;i++)
{
if((chessBoard[i][0]==chessBoard[i][1])&&(chessBoard[i][1]==chessBoard[i][2]))//判断行
{
if(chessBoard[i][1]=='X')
{
printf("祝贺你,你赢了!\n");
return 1;
}
if(chessBoard[i][1]=='Y')
{
printf("电脑赢了!\n");
return 1;
}
}
}
for(i=0;i<3;i++)
{
if((chessBoard[0][i]==chessBoard[1][i])&&(chessBoard[1][1]==chessBoard[2][i]))//判断列
{
if(chessBoard[1][i]=='X')
{
printf("祝贺你,你赢了!\n");
return 1;
}
if(chessBoard[1][i]=='Y')
{
printf("电脑赢了!\n");
return 1;
}
}
}
printf("你们打成了平局!"); //否则输出平局
return 0;
}