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); }
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); }
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); }