Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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));
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }