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(); }
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); }
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); }
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); }
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); }
public void Move(SpaceProbe spaceProbe) => spaceProbe.TurnRight();
public abstract int Step(SpaceProbe spaceProbe);
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); }
public override bool IsPossibleMove(SpaceProbe spaceProbe, SpaceProbePositioner spaceProbePositioner) => spaceProbe.PositionX > 0;
public void MoveSpaceProbe(SpaceProbe spaceProbe, IMovimentAgent motionAgent) => motionAgent.Move(spaceProbe);
public override int Step(SpaceProbe spaceProbe) => spaceProbe.PositionX--;
public void Move(SpaceProbe spaceProbe) => spaceProbe.TurnLeft();