本着代码简洁的目标就用for写了玩家输入落子点的那几行代码(虽然这让玩家在玩的时候有点别扭,但起码代码看着简洁一些)
我也是新手,大家可以提意见(我已经自己玩了几次了,没啥问题)
代码: 全选
//井字棋游戏
#include<stdio.h>
int main()
{
int huihe=0,winner=0,choice,row,column;
char board[3][3]={'1','2','3','4','5','6','7','8','9'}; //棋盘
printf("游戏开始\t玩家1是A\t玩家2是B\n\n");
while(1)
{
++huihe;
printf(" %c | %c | %c\n",board[0][0],board[0][1],board[0][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n",board[1][0],board[1][1],board[1][2]);
printf("---+---+---\n");
printf(" %c | %c | %c\n",board[2][0],board[2][1],board[2][2]);
for(int i=1;i<=2;i++)
{
printf("请玩家%d走棋\n",i);
scanf("%d",&choice);
choice-=1;
row=(int)choice/3;
column=(int)choice%3;
board[row][column]=(i==1?'A':'B');
if(huihe>=3)
{
for(int i=0;i<=2;i++)
if(board[i][0]==board[i][1]&&board[i][1]==board[i][2])
if(board[i][0]=='A')
winner=1;
else
winner=2;
for(int j=0;j<=2;j++)
if(board[0][j]==board[1][j]&&board[1][j]==board[2][j])
if(board[0][j]=='A')
winner=1;
else
winner=2;
if(board[0][0]==board[1][1]&&board[1][1]==board[2][2])
if(board[0][0]=='A')
winner=1;
else
winner=2;
if(board[0][2]==board[1][1]&&board[1][1]==board[2][0])
if(board[0][2]=='A')
winner=1;
else
winner=2;
}
if(winner!=0)
break;
}
if(winner!=0)
break;
}
printf("恭喜玩家%d获胜!!\n",winner);
}