Я разрабатываю игру «Minesweeper» для Andoid на Java, и у меня есть проблема при открытии ячеек. Как убедиться, что я нажимаю на ячейку, открытую рядом с пустыми ячейками? (Как это делается в Miner для Windows). Введение: У меня есть массив, который я получаю из потока сокетов bluetooth. Массив так:Алгоритм Android Minesweeper
1 9 1 0
1 1 1 0
0 0 0 0
0 0 0 0
9-кладезь 0-это пустая ячейка подсчитывать 1-Ближайшая мин
После того, что я вычислить игровое поле
функцииarray = Model.getGameField();
int size = array.length;
for (int i = 0; i < size; i++)
for (int j = 0; j < size; j++)
{
((TableRow) table.getChildAt(i)).getChildAt(j).setTag(array[i][j] + "");
}
OnClick:
if (iWantToSetFlag == 0)
{
tmpBtn = ((Button) v);
if (!(tmpBtn.getTag().equals("9")))
{
OpenButtons(tmpBtn.getId()/10, tmpBtn.getId() % 10);
recreateTable();
}
else
startLose();
}
else
{
if (((Button) v).getText().equals("M"))
((Button) v).setText("");
else
((Button) v).setText("M");
}
У меня есть функция
private void OpenButtons(int x, int y)
{
array[x][y] = -1;
for (int k = -1; k < 2; k++)
{
for (int k1 = 1; k1 >= -1; k1--)
{
if (x + k >= 0 && x + k < array.length && y - k1 >= 0 && y - k1 < array[x + k].length)
if (array[x + k][y - k1] == 0)
OpenButtons(x + k, y - k1);
}
}
}
, которые рекурсивно открывают ячейки, но у меня есть ошибка StackOverFlow. Помоги пожалуйста.
'«... рекурсивно открытые клетки, но у меня есть ошибки StackOverflow Помогите пожалуйста..»' - которые, как правило, для меня значит, что у вас есть проблемы с остановкой условия в рекурсии. –
Кстати, игнорирование индекса массива за пределами границ - плохая идея; очень, *** очень *** плохая идея. –
Но я не игнорирую это. –