Пример #1
0
        static void Main(string[] args)
        {
            try
            {
                var limitX = InputParams.Position("Set limit to cartesian point from X axis: ");
                var limitY = InputParams.Position("Set limit to cartesian point from Y axis: ");

                var spaceProbePositioner = new SpaceProbePositioner(limitX, limitY);

                while (true)
                {
                    var positionX  = InputParams.Position("Set cartesian point from X axis: ");
                    var positionY  = InputParams.Position("Set cartesian point from Y axis: ");
                    var direction  = InputParams.Direction("Set direction in plateau (N S E W): ");
                    var moviments  = InputParams.Moviments("Set sequence of moviments. Ex: L M L M L M L M M: ");
                    var spaceProbe = new SpaceProbe()
                    {
                        Direction = direction,
                        PositionX = positionX,
                        PositionY = positionY
                    };

                    spaceProbePositioner.MoveSpaceProbe(spaceProbe, MovimentsFactory.SetMoviments(moviments, spaceProbePositioner));
                    Console.WriteLine(spaceProbe.ToString());
                    Console.WriteLine();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            Console.ReadKey();
        }
Пример #2
0
        public void TestTurnLeftWithRedirector(SpaceProbe spaceProbe, SpaceProbe expected)
        {
            var leftRedirector = new LeftRedirectorAgent();

            leftRedirector.Move(spaceProbe);
            Assert.Equal(expected.Direction.Current, spaceProbe.Direction.Current);
        }
        public void TestMoveToFrontAfterTurnRight(SpaceProbe spaceProbe, SpaceProbe expected)
        {
            spaceProbe.TurnRight();
            spaceProbe.Moving();

            Assert.Equal(expected.Direction.Current, spaceProbe.Direction.Current);
            Assert.Equal(expected.PositionX, spaceProbe.PositionX);
            Assert.Equal(expected.PositionY, spaceProbe.PositionY);
        }
        public void TurnRight(CardinalDirections initial, CardinalDirections expected)
        {
            var spaceProbe = new SpaceProbe();

            spaceProbe.Direction = initial;

            spaceProbe.RightRotation();

            Assert.Equal(expected, spaceProbe.Direction);
        }
        public void LandOnInvalidPosition(int width, int height, CardinalDirections direction)
        {
            var marsPlateau = new MarsPlateau();
            var spaceProbe  = new SpaceProbe();

            marsPlateau.SetSize(1, 1);

            spaceProbe.Land(marsPlateau, new Position(width, height), direction);

            Assert.Null(spaceProbe.Position);
        }
        public void LandOnValidPosition(int width, int height, CardinalDirections direction)
        {
            var marsPlateau = new MarsPlateau();
            var spaceProbe  = new SpaceProbe();

            marsPlateau.SetSize(10, 10);

            spaceProbe.Land(marsPlateau, new Position(width, height), direction);

            Assert.Equal(spaceProbe.Position.XAxis, width);
            Assert.Equal(spaceProbe.Position.YAxis, height);
        }
Пример #7
0
        public void TestCreateMoviments(string moviments, SpaceProbe spaceProbe, SpaceProbe expected)
        {
            var limitX = 5;
            var limitY = 5;

            var spaceProbePositioner = new SpaceProbePositioner(limitX, limitY);

            spaceProbePositioner.MoveSpaceProbe(spaceProbe, MovimentsFactory.SetMoviments(moviments, spaceProbePositioner));

            Assert.Equal(expected.PositionX, spaceProbe.PositionX);
            Assert.Equal(expected.PositionY, spaceProbe.PositionY);
            Assert.Equal(expected.Direction.Current, spaceProbe.Direction.Current);
        }
Пример #8
0
        public void PrepareTest(int limitX, int limitY, Direction direction)
        {
            var spaceProbePositioner = new SpaceProbePositioner(limitX, limitY);
            var spaceProbe           = new SpaceProbe()
            {
                Direction = direction,
                PositionX = limitX,
                PositionY = limitY
            };
            var motionAgent = new MovimentAgent(spaceProbePositioner);

            spaceProbePositioner.MoveSpaceProbe(spaceProbe, motionAgent);
        }
        public void MoveForward(CardinalDirections direction, int expectedXAxis, int expectedYAxis)
        {
            var spaceProbe = new SpaceProbe();

            spaceProbe.Position  = new Position(2, 2);
            spaceProbe.Direction = direction;

            var marsPlateau = new MarsPlateau();

            marsPlateau.SetSize(3, 3);
            spaceProbe.PlateauLanded = marsPlateau;

            spaceProbe.MoveForward();

            Assert.Equal(spaceProbe.Position.XAxis, expectedXAxis);
            Assert.Equal(spaceProbe.Position.YAxis, expectedYAxis);
        }
Пример #10
0
        public static void Main(string[] args)
        {
            var marsPlateau             = new MarsPlateau();
            List <SpaceProbe> probeList = new List <SpaceProbe>();
            var probe       = new SpaceProbe();
            var consoleRead = "initial";

            while (true)
            {
                consoleRead = Console.ReadLine();

                if (!string.IsNullOrEmpty(consoleRead))
                {
                    var command = new CommandParser(consoleRead);
                    if (command.CommandType == Core.Auxiliar.CommandType.CreatePlateau)
                    {
                        marsPlateau.SetSize(command.Size.Height, command.Size.Width);
                    }
                    else if (command.CommandType == Core.Auxiliar.CommandType.Land)
                    {
                        probe = new SpaceProbe();
                        probeList.Add(probe);
                        probe.Land(marsPlateau, command.Position, command.Direction);
                    }
                    else if (command.CommandType == Core.Auxiliar.CommandType.Move)
                    {
                        probe.Move(command.Movements);
                    }
                }
                else
                {
                    foreach (var item in probeList)
                    {
                        Console.WriteLine(item.Location());
                    }
                }
            }
        }
 public void TestTurnToRight(SpaceProbe spaceProbe, SpaceProbe expected)
 {
     spaceProbe.TurnRight();
     Assert.Equal(expected.Direction.Current, spaceProbe.Direction.Current);
 }
Пример #12
0
 public void Move(SpaceProbe spaceProbe) => spaceProbe.TurnRight();
Пример #13
0
 public abstract int Step(SpaceProbe spaceProbe);
Пример #14
0
 public abstract bool IsPossibleMove(SpaceProbe spaceProbe, SpaceProbePositioner spaceProbePositioner);
 public void TestMoveToFrontInCurrentDirection(SpaceProbe spaceProbe, SpaceProbe expected)
 {
     spaceProbe.Moving();
     Assert.Equal(expected.PositionX, spaceProbe.PositionX);
     Assert.Equal(expected.PositionY, spaceProbe.PositionY);
 }
Пример #16
0
 public override bool IsPossibleMove(SpaceProbe spaceProbe, SpaceProbePositioner spaceProbePositioner) =>
 spaceProbe.PositionX > 0;
Пример #17
0
 public void MoveSpaceProbe(SpaceProbe spaceProbe, IMovimentAgent motionAgent) => motionAgent.Move(spaceProbe);
Пример #18
0
 public override int Step(SpaceProbe spaceProbe) => spaceProbe.PositionX--;
Пример #19
0
 public void Move(SpaceProbe spaceProbe) => spaceProbe.TurnLeft();