input: Write a python function to determine the winner of a TicTacToe game.
  assert TicTacToe().player_move(0, 0, 'X') == False
  assert TicTacToe().player_move(1, 1, 'X') == False
  assert TicTacToe().player_move(2, 2, 'X') == True
  assert TicTacToe().player_move(0, 0, 'O') == False
  assert TicTacToe().player_move(0, 1, 'O') == False
  assert TicTacToe().player_move(0, 2, 'O') == True
output: class TicTacToe:
      def __init__(self):
          self.board = [['' for _ in range(3)] for _ in range(3)]
          self.moves = 0
  
      def player_move(self, row, col, player):
          if self.board[row][col] != '':
              raise ValueError("Cell already taken")
          self.board[row][col] = player
          self.moves += 1
          
          return self.check_winner(row, col, player)
  
      def check_winner(self, row, col, player):
          # Check the row
          if all(self.board[row][c] == player for c in range(3)):
              return True
          # Check the column
          if all(self.board[r][col] == player for r in range(3)):
              return True
          # Check the main diagonal
          if row == col and all(self.board[i][i] == player for i in range(3)):
              return True
          # Check the anti-diagonal
          if row + col == 2 and all(self.board[i][2-i] == player for i in range(3)):
              return True
          return False