Здравствуйте, задача решена (публиковать весь код запрещено). Не могу понять в чем ошибка. При тесте игры примерно на половине открытого поля выскакивает выигрыш. Повторно пошагово решила задачу, валидатор возражений не имел.
Опубликованная версия: https://javarush.com/projects/apps/137
Сейчас переделала код следующим образом, ошибка всё равно выскакивает. Подскажите. пожалуйста.
private void openTile(int x, int y) {
if(gameField[y][x].isOpen == false && gameField[y][x].isFlag == false && isGameStopped == false) {
// условие для ячейки-мины;
if(gameField[y][x].isMine == true) {
setCellValueEx(x, y, Color.YELLOW, MINE);
gameOver();
}
// устанавливаем количество мин вокруг текущей ячейки;
if(gameField[y][x].isMine == false) {
setCellNumber(x, y, gameField[y][x].countMineNeighbors);
gameField[y][x].isOpen = true;
setCellColor(x, y, Color.LIGHTGREY);
countClosedTiles--; // уменьшаем на одну открытую ячейку;
score += 5;
// если соседей-мин нет, то вскрываем поле вокруг;
if(gameField[y][x].countMineNeighbors == 0) {
List<GameObject> list1 = getNeighbors(gameField[y][x]);
for(GameObject f: list1) {
if(f.isOpen == false) {
openTile(f.x, f.y);
}
}
setCellValue(x, y, "");
gameField[y][x].isOpen = true;
setCellColor(x, y, Color.LIGHTGREY);
countClosedTiles = countClosedTiles - (list1.size()-1); // отнимаем количество вскрытых ячеек.
score += 5*(list1.size()-1);
}
setScore(score);
if(countClosedTiles == countMinesOnField) {
win();
}
}
}
}