Пример #1
0
        public SurfaceBase DefineSurface()
        {
            SurfaceBase surfaceDimensions = new SurfaceBase();

            Console.Write("Enter a value for the X: ");
            surfaceDimensions.MaximunXAxis = Convert.ToInt32(Console.ReadLine());
            LinesCleaner.Clean();
            Console.Write("Enter a value for the Y: ");
            surfaceDimensions.MaximunYAxis = Convert.ToInt32(Console.ReadLine());
            LinesCleaner.Clean();

            return(surfaceDimensions);
        }
Пример #2
0
        public RobotInitial RobotPositionAndCommands()
        {
            CoordinatesValidator coordinatesValidator = new CoordinatesValidator();
            MotionValidator      motionValidator      = new MotionValidator();

            Console.CursorVisible = true;
            Coordinates initialRobotPositionOnScreen = new Coordinates();
            Coordinates robotPositionInMarthSurface  = new Coordinates();
            MotionModel commands = new MotionModel();

            RobotInitial robotInitial = new RobotInitial();

            Console.WriteLine("Now, initial coordinates of the robot and It´s orientation (N, S, E, W): ");
            LinesCleaner.BlankLine();

            int left = Console.CursorLeft;
            int top  = Console.CursorTop;

            while (true)
            {
                left = Console.CursorLeft;
                top  = Console.CursorTop;

                try
                {
                    LinesCleaner.BlankLine();
                    Console.Write("Enter the X: ");
                    robotInitial.RobotPositionInMarthSurface.XPosition = 9;
                    robotInitial.RobotPositionInMarthSurface.XPosition = Convert.ToInt32(Console.ReadLine());
                    LinesCleaner.Clean();
                    Console.Write("Enter the Y: ");
                    robotInitial.RobotPositionInMarthSurface.YPosition = Convert.ToInt32(Console.ReadLine());
                    LinesCleaner.Clean();
                    break;
                }
                catch (Exception)
                {
                    Console.WriteLine($"Write numbers! error");
                    Thread.Sleep(1000);
                    LinesCleaner.Clean();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);
                }
            }

            while (true)
            {
                left = Console.CursorLeft;
                top  = Console.CursorTop;
                try
                {
                    Console.Write("Enter the Orientation of Robot(N, S, E, W): ");
                    robotInitial.InitialRobotPositionOnScreen.Orientation = Console.ReadLine().ToUpper();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);

                    IList <ValidationFailure> orientationErrors =
                        coordinatesValidator.Validate(robotInitial.InitialRobotPositionOnScreen, options => options.IncludeProperties("Orientation")).Errors;
                    if (orientationErrors.Any())
                    {
                        foreach (var error in orientationErrors)
                        {
                            Console.WriteLine($"Error!: {error}");
                            Thread.Sleep(2000);
                            LinesCleaner.Clean();
                            LinesCleaner.Clean();
                            Console.SetCursorPosition(left, top);
                        }
                        throw new Exception("Please (N, S, E, W):");
                    }
                    break;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{ex.Message}");
                    Thread.Sleep(1000);
                    LinesCleaner.Clean();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);
                }
            }

            while (true)
            {
                left = Console.CursorLeft;
                top  = Console.CursorTop;

                try
                {
                    Console.Write("Give the instructions for the Robot (L/R/F): ");
                    commands.Instructions     = Console.ReadLine().ToUpper();
                    robotInitial.Instructions = commands.Instructions;
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);

                    IList <ValidationFailure> motionErrors =
                        motionValidator.Validate(commands).Errors;

                    if (motionErrors.Any())
                    {
                        foreach (var error in motionErrors)
                        {
                            Console.WriteLine($"Error!: {error} ");
                            Thread.Sleep(2000);
                            LinesCleaner.Clean();
                            LinesCleaner.Clean();
                            Console.SetCursorPosition(left, top);
                        }
                        throw new Exception("Please (L/R/F):");
                    }
                    break;
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"{ex.Message}");
                    Thread.Sleep(1000);
                    LinesCleaner.Clean();
                    LinesCleaner.Clean();
                    Console.SetCursorPosition(left, top);
                }
            }

            Thread.Sleep(10);
            Console.CursorVisible = false;
            return(robotInitial);
        }