Пришлось все переписывать через if, не нашел лучшего способа. Когда через try-catch просто ловит исключение, если соседняя ячейка вне массива. Потому что после публикации на сайте игра не работает через try-catch.
private ArrayList<GameObject> getNeighbors(GameObject gameObject) {
ArrayList<GameObject> neighbors = new ArrayList<GameObject>();
//добавляем соседей в список, если сосед вне массива, то ловим исключние
if (gameObject.x == 0 && gameObject.y == 0) { //левый верхний угол
neighbors.add(gameField[gameObject.y + 1][gameObject.x]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y][gameObject.x + 1]);
}
else if (gameObject.x == SIDE - 1 && gameObject.y == 0) { //правый верхний угол
neighbors.add(gameField[gameObject.y][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x]);
}
else if (gameObject.x == SIDE - 1 && gameObject.y == SIDE - 1) { //правый нижний угол
neighbors.add(gameField[gameObject.y - 1][gameObject.x]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y][gameObject.x - 1]);
}
else if (gameObject.x == 0 && gameObject.y == SIDE - 1) { //нижний левый угол
neighbors.add(gameField[gameObject.y - 1][gameObject.x]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y][gameObject.x + 1]);
}
else if (gameObject.x > 0 && gameObject.x < SIDE - 1 && gameObject.y == 0) { //для крайней верхней ячейки
neighbors.add(gameField[gameObject.y][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y][gameObject.x + 1]);
}
else if (gameObject.x > 0 && gameObject.x < SIDE - 1 && gameObject.y == SIDE - 1) { //для крайней нижней ячейки
neighbors.add(gameField[gameObject.y][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y][gameObject.x + 1]);
}
else if (gameObject.y > 0 && gameObject.y < SIDE - 1 && gameObject.x == 0) { //для крайней левой ячейки
neighbors.add(gameField[gameObject.y - 1][gameObject.x]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x]);
}
else if (gameObject.y > 0 && gameObject.y < SIDE - 1 && gameObject.x == SIDE - 1) { //для крайней правой ячейки
neighbors.add(gameField[gameObject.y - 1][gameObject.x]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x]);
} else {
neighbors.add(gameField[gameObject.y - 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x]);
neighbors.add(gameField[gameObject.y - 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x + 1]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x]);
neighbors.add(gameField[gameObject.y + 1][gameObject.x - 1]);
neighbors.add(gameField[gameObject.y][gameObject.x - 1]);
}
/*
try {
neighbors.add(gameField[gameObject.y - 1][gameObject.x - 1]);
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
neighbors.add(gameField[gameObject.y - 1][gameObject.x]);
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
neighbors.add(gameField[gameObject.y - 1][gameObject.x + 1]);
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
neighbors.add(gameField[gameObject.y][gameObject.x + 1]);
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
neighbors.add(gameField[gameObject.y + 1][gameObject.x + 1]);
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
neighbors.add(gameField[gameObject.y + 1][gameObject.x]);
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
neighbors.add(gameField[gameObject.y + 1][gameObject.x - 1]);
} catch (ArrayIndexOutOfBoundsException e) {
}
try {
neighbors.add(gameField[gameObject.y][gameObject.x - 1]);
} catch (ArrayIndexOutOfBoundsException e) {
}
*/
return neighbors;
}