编辑代码

#include <stdio.h>
char board[3][3];  // 创建的一个字符数组
void initialize_board()
{
	for (int row = 0; row < 3; row++)
	{
		for (int col = 0; col < 3; col++)
		{
			board[row][col] = ' ';
		}
	}
}

void print_board()
{
	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]);
}

int check_win(char player)
{
	for (int i = 0; i < 3; i++)
	{
		if (board[i][0] == player &&
		   board[i][1] == player &&
		   board[i][2] == player)
		{
			return 1;  // 水平方向获胜
		}
		if (board[0][i] == player &&
		   board[1][i] == player &&
		   board[2][i] == player)
		{
			return 1;  // 垂直方向获胜
		}
		if (board[0][0] == player &&
		   board[1][1] == player &&
		   board[2][2] == player)
		{
			return 1;  // 从左到右对角线
		}
		if (board[0][2] == player &&
		   board[1][1] == player &&
		   board[2][0] == player)
		{
			return 1;  // 从右到左对角线
		}
		return 0; // 没有赢
	}
}

int main()
{
   int row, col;
   char player = 'X';
   
   initialize_board();
   while (1)
   {
	   printf("Player %c's turn.\n", player);
	   printf("Enter row (0-2): ");
	   scanf("%d", &row);
	   printf("Enter column (0-2): ");
	   scanf("%d", &col);
	   
	   if (row < 0 || row > 2 || col < 0 || col > 2)
	   {
		   printf("Invalid input. Try again.\n");
		   continue;
	   }
	   
	   if (board[row][col] != ' ')
	   {
		   printf("That space is already occupied. Try again.\n");
		   continue;
	   }
	   
	   board[row][col] = player;
	   print_board();
	   
	   if (check_win(player))
	   {
		   printf("Player %c wins!\n", player);
		   break;
	   }
	   
	   if (player == 'X')
	   {
		   player = 'O';
	   }
	   else
	   {
		   player = 'X';
	   }
   }
   
   return 0;
}