Beispiel #1
0
        public ToyLocation Operator(ToyLocation currentToyLocation, [Optional] string parameter)
        {
            var nextPosition = new Position(currentToyLocation.Position.X, currentToyLocation.Position.Y);

            switch (currentToyLocation.Direction)
            {
            case Direction.East:
                nextPosition.X += 1;
                break;

            case Direction.West:
                nextPosition.X -= 1;
                break;

            case Direction.North:
                nextPosition.Y += 1;
                break;

            case Direction.South:
                nextPosition.Y -= 1;
                break;
            }

            if (toyTable.CanMoveToNewPosition(nextPosition))
            {
                currentToyLocation.Position = nextPosition;
            }

            return(currentToyLocation);
        }
        public ToyLocation Operator(ToyLocation currentToyLocation, [Optional] string parameter)
        {
            var intputParameters = this.parameterConvertor.InputParameterConvertor(parameter);

            var location = this.parameterConvertor.LocationConvertor(intputParameters.Last());

            if (!this.toyTable.CanMoveToNewPosition(location.Position))
            {
                return(currentToyLocation);
            }
            var toyLocation = new ToyLocation(location.Direction, location.Position);

            return(new ToyLocation(toyLocation.Direction
                                   , toyLocation.Position));
        }
        public string ExecuteCommand(Command command, string locationParameter)
        {
            if ((Command.Report == command) && (ToyLocation != null))
            {
                return($"Output: {ToyLocation.Position.X},{ToyLocation.Position.Y},{ToyLocation.Direction.ToString()}");
            }

            var location = this.commandExecutor.FirstOrDefault(x => x.Command == command)
                           ?.Operator(ToyLocation, locationParameter);


            this.ToyLocation = location;

            return(string.Empty);
        }
        public ToyLocation Operator(ToyLocation currentToyLocation, [Optional] string parameter)
        {
            currentToyLocation.Direction = currentToyLocation.Direction.Next();

            return(currentToyLocation);
        }