Exemple #1
0
        public bool RoverDataControl(string roverData, UpperRightCoordinatesModel upperRightCoordinateModel)
        {
            try
            {
                string[] roverDataSplit = roverData.CustomSplit(' ');
                if (roverDataSplit.Count() < 3)
                {
                    Console.WriteLine("Lütfen geçerli rover bilgisi giriniz!");
                    return(false);
                }
                if (!int.TryParse(roverDataSplit[0], out int x) || x <0 || x> upperRightCoordinateModel.XCoordinate || !int.TryParse(roverDataSplit[1], out int y) || y <0 || y> upperRightCoordinateModel.YCoordinate)
                {
                    Console.WriteLine("Lütfen bölge sınırları içinde geçerli değerler giriniz!");
                    return(false);
                }
                if (!EnumHelper.GetItems(typeof(DirectionEnum)).Contains(roverDataSplit[2]))
                {
                    Console.WriteLine("Lütfen geçerli pusula yön bilgisi giriniz!");
                    return(false);
                }

                return(true);
            }
            catch
            {
                Console.WriteLine("Lütfen geçerli rover bilgisi giriniz!");
                return(false);
            }
        }
Exemple #2
0
        static void Main(string[] args)
        {
            RegisterServices();
            UpperRightCoordinatesModel upperRightCoordinates = _roverService.EnterUpperRightCoordinates();
            List <RoversModel>         roverList             = _roverService.FillRoversData(upperRightCoordinates);

            _roverService.RoversMovementActions(roverList);
            Console.ReadKey();
        }
Exemple #3
0
        private char[] EnterRoverMovementCommandsData(string[] roverData, UpperRightCoordinatesModel upperRightCoordinateModel)
        {
            bool   succcess             = false;
            string movementCommandsData = string.Empty;

            while (!succcess)
            {
                Console.WriteLine("Rover hareket komutlarını giriniz...");
                movementCommandsData = Console.ReadLine();
                succcess             = RoverMovementCommandsDataControl(roverData, movementCommandsData, upperRightCoordinateModel);
            }
            char[] movementCommandsDataSplit = movementCommandsData.ToUpper().ToCharArray();
            return(movementCommandsDataSplit);
        }
Exemple #4
0
        private string[] EnterRoverData(UpperRightCoordinatesModel upperRightCoordinateModel)
        {
            bool   succcess  = false;
            string roverData = string.Empty;

            while (!succcess)
            {
                Console.WriteLine("Rover bilgilerini giriniz...");
                roverData = Console.ReadLine();
                succcess  = RoverDataControl(roverData, upperRightCoordinateModel);
            }
            string[] roverDataSplit = roverData.CustomSplit(' ');
            return(roverDataSplit);
        }
        public void RoversMovementActionTest()
        {
            List <RoversModel> roverList = new List <RoversModel>();

            #region Create Rover Test Model
            string upperRightCoordinates = "5 5";
            Assert.IsTrue(_roverService.UpperRightCoordinatesControl(upperRightCoordinates));
            UpperRightCoordinatesModel upperRightCoordinatesModel = new UpperRightCoordinatesModel
            {
                XCoordinate = Convert.ToInt32(upperRightCoordinates.Split(' ')[0]),
                YCoordinate = Convert.ToInt32(upperRightCoordinates.Split(' ')[1])
            };

            List <RoverListTestModel> roverTestList = new List <RoverListTestModel> {
                new RoverListTestModel
                {
                    RoverData = "1 2 N",
                    RoverMovementCommandsData = "LMLMLMLMM"
                },
                new RoverListTestModel
                {
                    RoverData = "3 3 E",
                    RoverMovementCommandsData = "MMRMMRMRRM"
                }
            };
            #endregion

            foreach (RoverListTestModel testModel in roverTestList)
            {
                Assert.IsTrue(_roverService.RoverDataControl(testModel.RoverData, upperRightCoordinatesModel));
                Assert.IsTrue(_roverService.RoverMovementCommandsDataControl(testModel.RoverData.Split(' '), testModel.RoverMovementCommandsData, upperRightCoordinatesModel));

                roverList.Add(new RoversModel
                {
                    XCoordinate           = Convert.ToInt32(testModel.RoverData.Split(' ')[0]),
                    YCoordinate           = Convert.ToInt32(testModel.RoverData.Split(' ')[1]),
                    Direction             = (int)EnumHelper.GetEnumByName <DirectionEnum>(testModel.RoverData.Split(' ')[2]),
                    RoverMovementCommands = testModel.RoverMovementCommandsData.ToCharArray().ToList()
                });
            }

            _roverService.RoversMovementActions(roverList);
        }
Exemple #6
0
        public List <RoversModel> FillRoversData(UpperRightCoordinatesModel upperRightCoordinateModel)
        {
            List <RoversModel> rovers = new List <RoversModel>();

            do
            {
                string[] roverData            = EnterRoverData(upperRightCoordinateModel);
                char[]   movementCommandsData = EnterRoverMovementCommandsData(roverData, upperRightCoordinateModel);

                rovers.Add(new RoversModel
                {
                    XCoordinate           = Convert.ToInt32(roverData[0]),
                    YCoordinate           = Convert.ToInt32(roverData[1]),
                    Direction             = (int)EnumHelper.GetEnumByName <DirectionEnum>(roverData[2]),
                    RoverMovementCommands = movementCommandsData.ToList()
                });
                Console.WriteLine("Rover ekleme işleminden çıkmak için ESC tuşuna basınız. İşleme devam etmek için herhangi bir tuşa basınız...");
            }while (Console.ReadKey().Key != ConsoleKey.Escape);

            Console.WriteLine();
            return(rovers);
        }
Exemple #7
0
        public bool RoverMovementCommandsDataControl(string[] roverData, string movementCommandsData, UpperRightCoordinatesModel upperRightCoordinateModel)
        {
            try
            {
                if (string.IsNullOrEmpty(movementCommandsData))
                {
                    return(false);
                }
                else
                {
                    char[]        movementCommandsDataSplit    = movementCommandsData.ToUpper().ToCharArray();
                    List <string> movementCommandsEnumDataList = EnumHelper.GetItems(typeof(MovementCommandsEnum));

                    RoversModel routeTestModel = new RoversModel
                    {
                        XCoordinate = Convert.ToInt32(roverData[0]),
                        YCoordinate = Convert.ToInt32(roverData[1]),
                        Direction   = (int)EnumHelper.GetEnumByName <DirectionEnum>(roverData[2]),
                    };

                    foreach (char data in movementCommandsDataSplit)
                    {
                        if (!movementCommandsEnumDataList.Contains(data.ToString()))
                        {
                            Console.WriteLine("Lütfen geçerli hareket komut bilgisi giriniz!");
                            return(false);
                        }
                        else
                        {
                            switch (data)
                            {
                            case 'L': routeTestModel.TurnLeft(); break;

                            case 'R': routeTestModel.TurnRight(); break;

                            default: routeTestModel.Move(); break;
                            }

                            if (routeTestModel.XCoordinate > upperRightCoordinateModel.XCoordinate || routeTestModel.YCoordinate > upperRightCoordinateModel.YCoordinate || routeTestModel.XCoordinate < 0 || routeTestModel.YCoordinate < 0)
                            {
                                Console.WriteLine("Lütfen hareket komutlarını rover bölge içinde kalacak şekilde giriniz!");
                                return(false);
                            }
                        }
                    }

                    return(true);
                }
            }
            catch
            {
                return(false);
            }
        }