В куске этого говнокода нужно запустить рекурсию, с условием
если открытая ячейка содержит ноль, то проверить соседние ячейки,
если соседняя ячейка содержит ноль , то открыть её, если её соседняя ячейка содержит ноль, то её тоже открыть.
Вопрос: как блин это сделать???? У меня не получается проверить содержит ли соседняя ячейка ноль,
рекурсия циклится на первой ячейке и вырубается с ошибкой. Два дня ковыряюсь....уже полную ахинею пишу.
Спасайте.
private void openTile(int x, int y) {
GameObject go = gameField[y][x];
gameField[x][y].isOpen = true;
setCellColor(x, y, Color.GREEN);
if(!go.isMine) {
setCellNumber(x, y, go.countMineNeighbors);
// до этого места все предыдущие условия выполняются, дальше до else полная каша
if(getCellNumber(x, y) == 0) {
// openTile(x, y);
System.out.println("open");
for(GameObject gameObject: getNeighbors(go)) {
// System.out.println("print 1 " + "x = " + go.x + " " + "y =" + go.y);
if(gameObject.isOpen && gameObject.countMineNeighbors == 0) {
System.out.println("print 2 = " + gameObject.countMineNeighbors);
openTile(x, y);
}
}
}
}
else {
setCellValue(go.x, go.y, MINE);
}
}package com.javarush.games.minesweeper;
public class GameObject {
public int x;
public int y;
public boolean isMine;
public int countMineNeighbors;
public boolean isOpen;
public boolean isFlag;
GameObject(int x, int y, boolean isMine) {
this.x = x;
this.y = y;
this.isMine = isMine;
}
}