private static bool TryNavigate(ref Rover rover, PlateuArea plateuArea) { ConsoleKeyInfo key = new ConsoleKeyInfo(); StringBuilder navigation = new StringBuilder(); bool isValid; do { navigation.Clear(); Console.WriteLine("Enter navigation:"); navigation.Append(InputOutputHelper.GetTrimUpperCase(Console.ReadLine())); isValid = ValidationHelper.IsValidNavigationString(navigation.ToString()); if (!isValid) { MessageHelper.ErrorMessage("Enter valid navigation !!!"); } else { if (rover.TryNavigate(navigation.ToString(), plateuArea)) { Console.WriteLine("Stop rover? Y/N"); key = Console.ReadKey(); Console.WriteLine(); } else { MessageHelper.ErrorMessage("Position is out of Plateu !!!"); } } } while (!isValid || key.Key != ConsoleKey.Y); return(true); }
private void SetRover(string plateuString, string positionString) { upperRightPoint = ConversionHelper.ToPoint(plateuString); lowerLeftPoint = ConversionHelper.DefaultPoint(); plateuArea = new PlateuArea(upperRightPoint, lowerLeftPoint); plateu = new Plateu(plateuArea); string pos = positionString; position = ConversionHelper.ToPoint(ConversionHelper.ExtractPointFromPosition(pos)); direction = ConversionHelper.ToDirection(ConversionHelper.ExtractDirectionFromPosition(pos)); rover = new Rover(position, direction); }
public void Invalid_Rover_Position_Test() { upperRightPoint = ConversionHelper.ToPoint("100 100"); lowerLeftPoint = ConversionHelper.DefaultPoint(); plateuArea = new PlateuArea(upperRightPoint, lowerLeftPoint); plateu = new Plateu(plateuArea); string pos = "101 101 S"; position = ConversionHelper.ToPoint(ConversionHelper.ExtractPointFromPosition(pos)); direction = ConversionHelper.ToDirection(ConversionHelper.ExtractDirectionFromPosition(pos)); rover = new Rover(position, direction); Assert.False(rover.IsValidPosition(plateuArea)); }
private static PlateuArea GetPlateuArea() { PlateuArea plateuArea; StringBuilder area = new StringBuilder(); do { area.Clear(); Console.WriteLine("Enter plateu area:"); area.Append(InputOutputHelper.GetTrimUpperCase(Console.ReadLine())); Point upperRightPoint = ConversionHelper.ToPoint(area.ToString()); Point lowerLeftPoint = ConversionHelper.DefaultPoint(); plateuArea = new PlateuArea(upperRightPoint, lowerLeftPoint); if (plateuArea.GetUpperRightPoint() == null) { MessageHelper.ErrorMessage("Enter valid area !!!"); } } while (plateuArea.GetUpperRightPoint() == null); return(plateuArea); }
public static Plateu GetPlateuData() { ConsoleKeyInfo key; PlateuArea plateuArea = GetPlateuArea(); Plateu plateu = new Plateu(plateuArea); do { Rover rover = GetRover(); if (rover.IsValidPosition(plateuArea) && TryNavigate(ref rover, plateuArea)) { plateu.AddRover(rover); } else { MessageHelper.ErrorMessage("Position is out of Plateu !!!"); } Console.WriteLine("Do you want to start new rover?Y/N"); key = Console.ReadKey(true); } while (key.Key != ConsoleKey.N); return(plateu); }