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