public Position GetNextPosition() { if (!IsPlaced) { return(null); } if (!Direction.HasValue) { return(null); } switch (Direction.Value) { case RobotDirection.North: return(new Position { X = PositionX.GetValueOrDefault(), Y = PositionY.GetValueOrDefault() + Speed }); case RobotDirection.East: return(new Position { X = PositionX.GetValueOrDefault() + Speed, Y = PositionY.GetValueOrDefault() }); case RobotDirection.South: return(new Position { X = PositionX.GetValueOrDefault(), Y = PositionY.GetValueOrDefault() - Speed }); case RobotDirection.West: return(new Position { X = PositionX.GetValueOrDefault() - Speed, Y = PositionY.GetValueOrDefault() }); } return(null); }