private static void Main(string[] args) { string input = string.Empty; var translator = new CommandTranslator(); Grid grid = new Grid(10, 10, new Position(0, 0)); DirectionMove direction = new DirectionMove(grid); OrientationMove orientation = new OrientationMove(); var movementService = new MovementService(grid, direction, orientation); var rover = new Rover(movementService); PrintStatus(movementService); while (input != "x") { input = Console.ReadLine(); var command = translator.Parse(input); var result = rover.Move(command); if (result.IsFail) { Console.WriteLine("Obstacle detected."); } PrintStatus(movementService); } }
private void ChangeOrientation(OrientationMove move, int count = 1) { count = SolvingUtility.NormalizeCount(count); switch (move) { case OrientationMove.X: // x for (int i = 0; i < count; i++) { CubeFace tmp = cubeOrientation[(int)CubeFace.FRONT]; cubeOrientation[(int)CubeFace.FRONT] = cubeOrientation[(int)CubeFace.DOWN]; cubeOrientation[(int)CubeFace.DOWN] = cubeOrientation[(int)CubeFace.BACK]; cubeOrientation[(int)CubeFace.BACK] = cubeOrientation[(int)CubeFace.UP]; cubeOrientation[(int)CubeFace.UP] = tmp; } break; case OrientationMove.Y: // y for (int i = 0; i < count; i++) { CubeFace tmp = cubeOrientation[(int)CubeFace.FRONT]; cubeOrientation[(int)CubeFace.FRONT] = cubeOrientation[(int)CubeFace.RIGHT]; cubeOrientation[(int)CubeFace.RIGHT] = cubeOrientation[(int)CubeFace.BACK]; cubeOrientation[(int)CubeFace.BACK] = cubeOrientation[(int)CubeFace.LEFT]; cubeOrientation[(int)CubeFace.LEFT] = tmp; } break; case OrientationMove.Z: // z for (int i = 0; i < count; i++) { CubeFace tmp = cubeOrientation[(int)CubeFace.LEFT]; cubeOrientation[(int)CubeFace.LEFT] = cubeOrientation[(int)CubeFace.DOWN]; cubeOrientation[(int)CubeFace.DOWN] = cubeOrientation[(int)CubeFace.RIGHT]; cubeOrientation[(int)CubeFace.RIGHT] = cubeOrientation[(int)CubeFace.UP]; cubeOrientation[(int)CubeFace.UP] = tmp; } break; } }
public void SetUp() { _orientation = new OrientationMove(); }