Доброго времени суток.
Довольно таки долго промучал данную задачу.
В конце концов с 28й попытки решил данную задачу, подсмотрев в разделе помощи, можно сказать, почти не отличающуюся логику!
Но суть не в этом, у меня остались вопросы, почему мой переписанный несколько раз и рабочий код для этой задачи не принимал валидатор!?
А именно не принимал последний пункт - "Метод openTile(int, int) не должен ничего выводить, если элемент не является миной и количество соседей мин равно нулю. Используй пустую строку."
Вот один из последних моих вариантов (уже обросший монстр), который я пытался безуспешно скормить валидатору, уже отчаянно переставляя в разные линии метод setCellValue(x, y, "")
private void openTile(int x, int y)//отрисовывает мины и количество соседей-мин при клике
{
gameField[y][x].isOpen = true;//указываем что ячейка открыта
setCellColor(x, y, Color.GREEN);//заддаем цвет
if (gameField[y][x].isMine) {
setCellValue(x, y, MINE);
setCellColor(x, y, Color.RED);//заддаем цвет
}//если мина то отрисовываем мины в ячейке
if (!gameField[y][x].isMine && gameField[y][x].countMineNeighbors > 0)//не является миной и количество соседей мин больше нуля
{
setCellNumber(x, y, gameField[y][x].countMineNeighbors);//пишем количество мин соседей
}
if (!gameField[y][x].isMine && gameField[y][x].countMineNeighbors == 0) {//не является миной и количество соседей-мин равно нулю
setCellValue(x, y, "");//убираем нолик оставляем пустоту
List<GameObject> temp = getNeighbors(gameField[y][x]);//временный список соседей
List<GameObject> tempNoOpen = new ArrayList<>();//временный список не открытых соседей
for (GameObject aTemp : temp) {//пеербор списка соседейсоседей
{
if (!aTemp.isOpen) {//если ячейка не открыта
tempNoOpen.add(gameField[aTemp.y][aTemp.x]);//список не открытых соседей
}
}
}
for (GameObject aTemp : tempNoOpen)//перебор списка не открытых
{
openTile(aTemp.x, aTemp.y);//рекурсия!!!
}
}
}
Буду очень рад помощи в разборе полета!