#include
int main(void)
{
int player = 0; //游戏玩家1和玩家2
int winner = 0; //胜利玩家号码
int choice = 0; //选择方格
unsigned int row = 0; //定义行
unsigned int column = 0; //定义列
char board [3][3] = {
{'1','2','3'},
{'4','5','6'},
{'7','8','9'}
};
for(unsigned int i = 0; i < 9 && winner == 0 ;++i)
{
printf("\n");
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]);
player = i%2 + 1; //选择玩家
do
{
printf("player %d,please enter a valid square number for where you want to place your %c\n",player,(player == 1) ? 'X':'O');
scanf("%d",&choice);
row = --choice/3; //得到行的索引值
column = choice % 3; //得到列的索引值
}while(choice < 0 || choice > 8 || board[row][column] > '9');
board[row][column] = (player == 1) ? 'X':'O';
if( (board[0][0] == board[1][1] && board[0][0] == board[2][2]) ||
(board[0][2] == board[1][1] && board[0][2] == board[2][0] ) )
winner == player;
else
{
for(unsigned int line = 0; line <= 2; ++line)
{
if((board[line][0] == board[line][1] && board[line][0] == board[line][2])||
(board[0][line] == board[1][line] && board[0][line] == board[2][line]))
winner == player;
}
}
}
printf("\n");
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]);
if(winner)
printf("\nconggratulations,player %d,YOU ARE THE WINNER!\n",winner);
else
printf("\nHow boring , it is a draw\n");
return 0;
}
<>这段程序有问题,怎么做都赢不了,不知道什么地方出错了!另外do while 循环在这里难以理解特别是--choice/3那里,其次是if else这一堆数组是什么意思?忘指导