public static int ResolveMoveEnergy(Position from, Position to, int stepsCount, Map map, IList <Robot> robots) { IList <Position> positions = new List <Position>(); positions.Add(from); for (int i = 0; i < stepsCount; i++) { positions.Add(ResolveMovePosition(positions[i], to, stepsCount - i, map, robots)); } positions.Add(to); int energy = 0; for (int i = 0; i < positions.Count - 1; i++) { energy += ResolveDistanceEnergy(positions[i], positions[i + 1]); } return(energy); }
public static Position ResolveMovePosition(Position from, Position to, int stepsCount, Map map, IList <Robot> robots) { float x = from.X + (to.X - from.X) / stepsCount; float y = from.Y + (to.X - from.X) / stepsCount; Position position = new Position((int)Math.Round(x), (int)Math.Round(y)); return(map.FindFreeCell(position, robots)); }