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); }
public CarController(ICarCommand carCommand) { _carCommand = carCommand; }