Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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;
            }
        }
Esempio n. 3
0
 public void SetUp()
 {
     _orientation = new OrientationMove();
 }