MineSweeper游戏

时间:2014-11-26 19:18:26

标签: java user-interface actionlistener

这个扫雷游戏是传统的游戏,但是这个人从三个生命开始,如果他能找到盾牌,可以再获得三个。此外,还可以找到一种非常罕见的不朽,并为用户提供无限的生命。

所以问题在于,当我重置游戏时,例如点击炸弹,那么我将失去一次以上的生命。但是一开始一切都很完美。这个问题不仅适用于此,而且适用于大多数问题。

所以这是代码:

    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);


            }
        }

    }
}

1 个答案:

答案 0 :(得分:1)

在你的&#34;重置&#34;行动分支,你这样做......

btn[x][y].addActionListener(this);

如果ActionListener之前未被删除,您将添加另一个ActionListener,因此下次点击该按钮时,您的ActionListener将被多次调用...

就我个人而言,我发现并没有涉及添加/删除听众,但我不确定在这个阶段是否可行,相反,你应该首先将自己删除为在再次添加自己之前ActionListener ...

btn[x][y].removeActionListener(this);
btn[x][y].addActionListener(this);