Сохранять соседние координаты мин в списке - PullRequest
0 голосов
/ 14 апреля 2019

Я хотел бы иметь возможность хранить пары координат (x, y), которые представляют соседей мин в приложении тральщика. HW Инструкции

Я создал оператор if для проверки наличия шахты первым.Я начал создавать список координат соседей.

 private List<Tuple<int,int>> getneighbors(int x, int y)
    {
        if (isMinePresent(x,y) == true)
        {
            List<Tuple<int, int>> neighbors = new List<Tuple<int, int>> () {x+1,y},{x+1,y+1} //etc;

            {

            }

        }
    }
}

Я хотел бы составить список из нескольких пар координат, каждая из которых представляет соседа.К сожалению, я получил ошибку: «C # не содержит конструктор, который принимает 2 аргумента».

1 Ответ

0 голосов
/ 14 апреля 2019

Этот метод берет координаты и возвращает все действительные соседние координаты.

Здесь необходимо ответить на вопрос: как определить, кто является действительными соседями? Для этого требуется немного логики - у квадрата есть соседи в своем ряду, предыдущий ряд и следующий ряд. Потенциально возможно до 8 соседей.

Взгляните на этот Stackblitz и поэкспериментируйте с ним немного. Я написал это на TypeScript, но понятия непосредственно применимы к C #.

Я определяю соседа как "действительного", если его координата находится в пределах одной из начальных координат, но НЕ выходит за границы.

getNeighbors(inX: number, inY: number) {

    // Get proper bounds
    var lowerX = Math.max(0, inX-1);
    var upperX = Math.min(inX+1, this.size);
    var lowerY = Math.max(0, inY-1);
    var upperY = Math.min(inY+1, this.size);

    var xCoords = Enumerable.rangeTo(lowerX, upperX);
    var yCoords = Enumerable.rangeTo(lowerY, upperY);          

    var result = new Array<Coordinate>();
    xCoords.forEach(x => {
       yCoords.forEach(y => {
         if (x !== inX || y !== inY) {
           result.push({x, y});
         }
       });
    });

    return result;
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...