예제 #1
0
        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()}");
        }
예제 #2
0
        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}.");
        }
예제 #3
0
 public void ReturnEastWhenReversedFromWest()
 {
     Assert.Equal(DirectionCalculator.West, DirectionCalculator.Reverse(DirectionCalculator.East));
 }
예제 #4
0
 public void ReturnSouthWhenReversedFromNorth()
 {
     Assert.Equal(DirectionCalculator.South, DirectionCalculator.Reverse(DirectionCalculator.North));
 }