public MarsRobot(int x, int y, RobotDirection direction)
 {
     _coordinates = new MarsCoordinates(x, y);
     _direction   = direction;
     if (_direction == RobotDirection.Unknown)
     {
         throw new ArgumentException("Invalid direction");
     }
 }
        private void Move(MarsGrid grid)
        {
            var previousPosition = _coordinates;

            if (grid.HasScent(_coordinates, _direction))
            {
                return;
            }

            switch (_direction)
            {
            case RobotDirection.North:
                _coordinates.PositionY++;
                break;

            case RobotDirection.South:
                _coordinates.PositionY--;
                break;

            case RobotDirection.East:
                _coordinates.PositionX++;
                break;

            case RobotDirection.West:
                _coordinates.PositionX--;
                break;

            default: throw new ArgumentException("Invalid robot direction");
            }
            ;

            if (_coordinates.PositionX > grid.MaxX ||
                _coordinates.PositionX < grid.MinX ||
                _coordinates.PositionY > grid.MaxY ||
                _coordinates.PositionY < grid.MinY)
            {
                _lost        = true;
                _coordinates = previousPosition;
                grid.AddScent(_coordinates, _direction);
            }
        }
Beispiel #3
0
 public bool HasScent(MarsCoordinates coordinates, RobotDirection direction)
 {
     return(Scents.Contains(new Scent(coordinates, direction)));
 }
Beispiel #4
0
 public Scent(MarsCoordinates coordinates, RobotDirection direction)
 {
     Coordinates = coordinates;
     Direction   = direction;
 }
Beispiel #5
0
 public void AddScent(MarsCoordinates coordinates, RobotDirection direction)
 {
     Scents.Add(new Scent(coordinates, direction));
 }