Ошибка в создании списка соседей?
package com.javarush.games.minesweeper;
import com.javarush.engine.cell.*;
import java.util.*;
public class MinesweeperGame extends Game{
private int countMinesOnField = 0;
private static final int SIDE = 9;
private GameObject[][] gameField = new GameObject[SIDE][SIDE];
public void initialize() {
setScreenSize(SIDE, SIDE);
createGame();
}
private void createGame(){
for (int i = 0; i<SIDE; i++){
for (int j=0; j<SIDE; j++){
if (getRandomNumber(10)==0) {
gameField[i][j]=new GameObject(j,i, true);
setCellColor(i,j,Color.ORANGE);
countMinesOnField++;
}
else {
gameField[i][j]=new GameObject(j,i, false);
setCellColor(i,j,Color.ORANGE);
}
}
}
countMineNeighbors();
}
private void countMineNeighbors(){
for (int i=0; i<SIDE; i++){ //Анализ всех ячеек массива на Мина или не Мина
for (int j =0; j<SIDE; j++){
GameObject r = gameField[i][j];
if (r.isMine) ;
else {
ArrayList<GameObject> e = getNeighbors(r); // Создание списка сосдей для ячеек-НеМин
int q = 0; // Переменная для подсчета ячеек-мин среди соседей
Iterator <GameObject> t = e.iterator(); // Подсчет количества мин у соседей и очищение списка для дальнейших итераций
while (t.hasNext()) {
GameObject u = t.next();
if (u.isMine) q++;
t.remove();
}r.countMineNeighbors = q; // присваивание ячейке количества соседей с минами
}
}
}
}
public ArrayList<GameObject> getNeighbors(GameObject w) { // создание списка соседей ячейки
ArrayList<GameObject> testarray = new ArrayList<>();
GameObject test = w;
int i = test.y; // инверсия координат
int j = test.x;
try { // Поиск соседей с помощью исключений
testarray.add(gameField[i][j+1]);
}
catch (Exception e){};
try {
testarray.add(gameField[i-1][j+1]);
}
catch (Exception e){};
try {
testarray.add(gameField[i-1][j]);
}
catch (Exception e){};
try {
testarray.add(gameField[i-1][j-1]);
}
catch (Exception e){};
try {
testarray.add(gameField[i][j-1]);
}
catch (Exception e){};
try {
testarray.add(gameField[i+1][j+1]);
}
catch (Exception e){};
try {
testarray.add(gameField[i+1][j]);
}
catch (Exception e){};
try {
testarray.add(gameField[i+1][j+1]);
}
catch (Exception e){};
return testarray;
}
}