Я делаю игру тральщика, в первой части, я решаю, есть ли какая-либо бомба на определенной кнопке, используя boolean1
(поле представляет собой массив 16x16). Я тестировал эту часть, а результат верно. 50 случайных true
значений, а остальные false
моя проблема начинается со второй части, где я хочу получить определенное действие кнопкой, основанной на значении boolean1
. При реализации кода все jbuttons
следуют за вторым ActionListener
, где значок установлен на bomb
. Я хочу получить jbuttons
, чтобы также следить за первым обработчиком.JButtons не следует за назначенными обработчиками?
первая процедура
static void placeMines()
{
for (int x=0;x<16;x++)
{
for (int y=0;y<16;y++)
{
if(boolean1[x][y]=(true))
{
boolean1[x][y]=false;
}
}
}
int minesPlaced = 0;
Random random = new Random();
while(minesPlaced < 50)
{
int a = random.nextInt(Width);
int b = random.nextInt(Height);
boolean1[a][b]=(true);
minesPlaced ++;
}
}
вторая процедура:
static void buttonfunctions()
{
for(int c=0;c<16;c++)
{
for(int d=0;d<16;d++)
{
if (boolean1[c][d]=false)
{
final int temp3=c;
final int temp4=d;
jbuttons[c][d].addActionListener(new ActionListener()
{
@Override
public void actionPerformed (ActionEvent e)
{
jbuttons[temp3][temp4].setIcon(clickedCell);
}
});
}
if(boolean1[c][d]=true)
{
final int temp1=c;
final int temp2=d;
jbuttons[temp1][temp2].addActionListener(new ActionListener()
{
@Override
public void actionPerformed (ActionEvent e)
{
jbuttons[temp1][temp2].setIcon(bomb);
}
});
}
}
}
}
'JButton' имеет хороший небольшой метод' putClientProperty' и 'getClientProperty', который позволяет вам ассоциировать больше данных с помощью кнопки, это может быть способ преодолеть необходимость использования еще одного массива. Я мог бы сохранить ячейку (x/y) кнопки, и при необходимости просто найти модель, чтобы определить состояние модели ... как идея – MadProgrammer
Чтобы лучше помочь, опубликуйте [MCVE] или [Short, Self Contained, Правильный пример] (http://www.sscce.org/). –