Exemplo n.º 1
0
        private static CardinalCompassPointType GetCardinalCompassPointByTurnLeft(CardinalCompassPointType cardinalCompassPointType)
        {
            switch (cardinalCompassPointType)
            {
            case CardinalCompassPointType.N:
                cardinalCompassPointType = CardinalCompassPointType.W;
                break;

            case CardinalCompassPointType.E:
                cardinalCompassPointType = CardinalCompassPointType.N;
                break;

            case CardinalCompassPointType.S:
                cardinalCompassPointType = CardinalCompassPointType.E;
                break;

            case CardinalCompassPointType.W:
                cardinalCompassPointType = CardinalCompassPointType.S;
                break;

            default:
                throw new ArgumentException($"{cardinalCompassPointType} cardinal compass point is not defined.");
            }

            return(cardinalCompassPointType);
        }
Exemplo n.º 2
0
        private CardinalCompassPointType GetDirectionTypeRotate(CardinalCompassPointType directionType, TurnType turnType)
        {
            if (turnType == TurnType.Left)
            {
                directionType = GetCardinalCompassPointByTurnLeft(directionType);
            }
            else if (turnType == TurnType.Right)
            {
                directionType = GetCardinalCompassPointByTurnRight(directionType);
            }
            else
            {
                throw new ArgumentException($"{turnType} Turn type is not find");
            }

            return(directionType);
        }
Exemplo n.º 3
0
        private (int xCoordinate, int yCoordinate, CardinalCompassPointType direction) GetPositionByMove(int xCoordinate, int yCoordinate, CardinalCompassPointType direction)
        {
            switch (direction)
            {
            case CardinalCompassPointType.N:
                yCoordinate++;
                break;

            case CardinalCompassPointType.E:
                xCoordinate++;
                break;

            case CardinalCompassPointType.S:
                yCoordinate--;
                break;

            case CardinalCompassPointType.W:
                xCoordinate--;
                break;

            default:
                break;
            }
            return(xCoordinate, yCoordinate, direction);
        }