public List <(AbstractField, int, Direction)> GetNeighbours(AbstractField field, AbstractField[][] board, int height, int width) { int[] center = field.GetPosition(); List <(AbstractField, int, Direction)> neighbours = new List <(AbstractField, int, Direction)>(); var neighbourCoordinates = DirectionExtensions.GetCoordinatesAroundCenter(center); for (int i = 0; i < neighbourCoordinates.Length; i++) { var(dir, y, x) = neighbourCoordinates[i]; if (y >= 0 && y < height && x >= 0 && x < width) { neighbours.Add((board[y][x], int.MaxValue, dir)); } } return(neighbours); }
public void TestGetCoordinatesAroundCenterMiddleField() { // Arrange (int y, int x)center = (5, 4); // Act var result = DirectionExtensions.GetCoordinatesAroundCenter(center); // Assert Assert.Equal(9, result.Length); Assert.Contains((Direction.SW, center.y - 1, center.x - 1), result); Assert.Contains((Direction.S, center.y - 1, center.x), result); Assert.Contains((Direction.SE, center.y - 1, center.x + 1), result); Assert.Contains((Direction.W, center.y, center.x - 1), result); Assert.Contains((Direction.FromCurrent, center.y, center.x), result); Assert.Contains((Direction.E, center.y, center.x + 1), result); Assert.Contains((Direction.NW, center.y + 1, center.x - 1), result); Assert.Contains((Direction.N, center.y + 1, center.x), result); Assert.Contains((Direction.NE, center.y + 1, center.x + 1), result); }