public double EvaluateCommand(RaceState state,
                                      bool ifFirstCar, V thisFlag, ICarCommand command)
        {
            var car = ifFirstCar ? state.FirstCar : state.SecondCar;

            car.NextCommand = command;
            state.Tick();
            if (!car.IsAlive)
            {
                return(double.MinValue);
            }
            //var nextFlag = state.GetNextFlag();
            //var bonusToNextFlag = (car.Pos + car.V).DistTo(nextFlag) - car.Pos.DistTo(nextFlag);
            var evaluation =
                flagsTakenCoeff * car.FlagsTaken
                - distToFlagCoeff * thisFlag.DistTo(car.Pos);

            //- bonusToNextFlagCoef * bonusToNextFlag;
            return(evaluation);
        }
Exemple #2
0
 public CarController(ICarCommand carCommand)
 {
     _carCommand = carCommand;
 }