Represents a player in the game.
The name of the player (defaults to piece type name if null).
The current number of pieces the player has on the board.
The type of piece the player uses (BLACK or WHITE).
Updates the player's points based on the current board state.
Returns a new Player instance with the opposite piece type.