public static Node[] getUnmarkedNeighbours(Node Start, bool Diagonal) { Node[] Neighbours = new Node[9]; int k = 0; int i = Start.getI(), j = Start.getJ(); if (i > 0) { if (!Graph[i - 1, j].isMarked()) { Neighbours[k] = Graph[i - 1, j]; k++; } if (j > 0) { if (Diagonal && !Graph[i - 1, j - 1].isMarked() && !Graph[i, j - 1].isBarrier() && !Graph[i - 1, j].isBarrier()) { Neighbours[k++] = Graph[i - 1, j - 1]; } } if (j < WIDTH - 1) { if (Diagonal && !Graph[i - 1, j + 1].isMarked() && !Graph[i, j + 1].isBarrier() && !Graph[i - 1, j].isBarrier()) { Neighbours[k++] = Graph[i - 1, j + 1]; } } } if (i < HEIGHT - 1) { if (!Graph[i + 1, j].isMarked()) { Neighbours[k] = Graph[i + 1, j]; k++; } if (j > 0) { if (Diagonal && !Graph[i + 1, j - 1].isMarked() && !Graph[i, j - 1].isBarrier() && !Graph[i + 1, j].isBarrier()) { Neighbours[k++] = Graph[i + 1, j - 1]; } } if (j < WIDTH - 1) { if (Diagonal && !Graph[i + 1, j + 1].isMarked() && !Graph[i, j + 1].isBarrier() && !Graph[i + 1, j].isBarrier()) { Neighbours[k++] = Graph[i + 1, j + 1]; } } } if (j > 0) { if (!Graph[i, j - 1].isMarked()) { Neighbours[k] = Graph[i, j - 1]; k++; } } if (j < WIDTH - 1) { if (!Graph[i, j + 1].isMarked()) { Neighbours[k] = Graph[i, j + 1]; k++; } } while (k < 9) { Neighbours[k++] = null; } return(Neighbours); }