input: Write a function to create a tic-tac-toe game and determine the winner.
  assert isinstance(Game("Alice", "Bob", 3), Game)
  assert Game("Alice", "Bob", 3).create_board() == [['_', '_', '_'], ['_', '_', '_'], ['_', '_', '_']]
  assert Game("Alice", "Bob", 3).game_over() == False
output: class Game:
      def __init__(self, player1, player2, size):
          self.player1 = player1
          self.player2 = player2
          self.size = size
          self.board = self.create_board()
          self.current_turn = player1
  
      def create_board(self):
          return [['_' for _ in range(self.size)] for _ in range(self.size)]
  
      def make_move(self, player, row, col):
          if self.board[row][col] == '_' and player == self.current_turn:
              self.board[row][col] = 'X' if player == self.player1 else 'O'
              self.current_turn = self.player2 if self.current_turn == self.player1 else self.player1
          else:
              raise ValueError("Invalid move or not player's turn")
  
      def check_winner(self):
          lines = []
  
          # Rows and Columns
          lines.extend(self.board)
          lines.extend([[self.board[row][col] for row in range(self.size)] for col in range(self.size)])
  
          # Diagonals
          lines.append([self.board[i][i] for i in range(self.size)])
          lines.append([self.board[i][self.size - 1 - i] for i in range(self.size)])
  
          for line in lines:
              if all(cell == 'X' for cell in line):
                  return self.player1
              if all(cell == 'O' for cell in line):
                  return self.player2
          return None
  
      def game_over(self):
          if self.check_winner() is not None:
              return True
          if all(cell != '_' for row in self.board for cell in row):
              return True
          return False