public string Execute(TextAdventureEngine engine, string[] parts) { var direction = -1; if ("forward" == parts.Last()) { direction = engine.CurrentOrientation; } else if ("backward" == parts.Last()) { direction = DirectionCalculator.Reverse(engine.CurrentOrientation); } if (direction == -1) { return($"I don't know how to move {parts.Last()}"); } if (engine.CurrentLocation.Directions[direction] == null) { return($"You cannot move {parts.Last()}"); } var oldLocation = engine.CurrentLocation; engine.CurrentLocation = oldLocation.Directions[direction]; return($"You move {parts.Last()}"); }
public string Execute(TextAdventureEngine engine, string[] parts) { var directionLabel = string.Empty; if (RightSynonyms.Contains(parts.Last())) { engine.CurrentOrientation = DirectionCalculator.TurnRight(engine.CurrentOrientation); directionLabel = "right"; } if (LeftSynonyms.Contains(parts.Last())) { engine.CurrentOrientation = DirectionCalculator.TurnLeft(engine.CurrentOrientation); directionLabel = "left"; } if (BackwardsSynonyms.Contains(parts.Last())) { engine.CurrentOrientation = DirectionCalculator.Reverse(engine.CurrentOrientation); directionLabel = "around"; } return(directionLabel == string.Empty ? "I don't understand which way you want me to turn." : $"You turn {directionLabel}."); }
public void ReturnEastWhenReversedFromWest() { Assert.Equal(DirectionCalculator.West, DirectionCalculator.Reverse(DirectionCalculator.East)); }
public void ReturnSouthWhenReversedFromNorth() { Assert.Equal(DirectionCalculator.South, DirectionCalculator.Reverse(DirectionCalculator.North)); }