protected override MoveValuation EvaluateMove(int choice) { int currentPoints = this.gameData.CountPoints(this.playerId); Game.Engine.Game afterTurn = this.gameData.Clone(); afterTurn.ChooseTurn(choice, this.playerId); int afterPoints = afterTurn.CountPoints(this.playerId); return(new MoveValuation() { Choice = choice, Weight = afterPoints - currentPoints, }); }