这个扫雷游戏是传统的游戏,但是这个人从三个生命开始,如果他能找到盾牌,可以再获得三个。此外,还可以找到一种非常罕见的不朽,并为用户提供无限的生命。
所以问题在于,当我重置游戏时,例如点击炸弹,那么我将失去一次以上的生命。但是一开始一切都很完美。这个问题不仅适用于此,而且适用于大多数问题。
所以这是代码:
if (e.getSource() == btnReset) {
// miss = 0;
// System.out.println(miss);
getMines();
lives = 3;
System.out.println(" lives = " +lives);
for (int x = 0; x < BOARD_HEIGHT; x++)
{
for (int y = 0; y < BOARD_WIDTH; y++)
{
btn[x][y].addActionListener(this);
btn[x][y].setBackground(null);
}
}
}
}
答案 0 :(得分:1)
在你的&#34;重置&#34;行动分支,你这样做......
btn[x][y].addActionListener(this);
如果ActionListener
之前未被删除,您将添加另一个ActionListener
,因此下次点击该按钮时,您的ActionListener
将被多次调用...
就我个人而言,我发现并没有涉及添加/删除听众,但我不确定在这个阶段是否可行,相反,你应该首先将自己删除为在再次添加自己之前ActionListener
...
btn[x][y].removeActionListener(this);
btn[x][y].addActionListener(this);