我如何计算我的扫雷代码中的炸弹数量?

How do I count the number of bombs in my Minesweeper code?

很好,我尝试创建一个更简单的扫雷游戏,但遇到了一个主要问题...... 我无法计算炸弹的数量并将其打印在 JTextField 关于如何计算这些的任何想法,因为我正在设置一个随机值来检查它们是否是炸弹

尝试在 ActionListener 中对其进行计数,但仅在单击按钮后才对炸弹进行计数。

     if(e.getSource()==b[i][j])
        {
            b[i][j].setVisible(false);

            tf[i][j].setVisible(true);
            int r1 = rand.nextInt(6);
            if(r1>1)
            {
                tf[i][j].setText("Safe");
                tf[i][j].setBackground(Color.green);

            }
            else    
            {   count++;
                tf[i][j].setText("Bomb");
                tf[i][j].setBackground(Color.red);
                f.setVisible(false);
                restart.setVisible(true);
            }
        }

据我了解,您可以使用随机生成器来决定该图块是否会在 运行 时间内成为炸弹。这样做你无法真正知道你的游戏中有多少地雷。我觉得你应该在游戏一开始就决定地雷的数量,然后随机把它们放在你的游戏板上(你可以根据难度选择数量)。

编辑

您可以创建一个列表,其中包含一些包含地雷的随机点

    int numOfMines =  10;

    int rows=5,columns=5;


    ArrayList listWithMines = new ArrayList();

    while(listWithMines.size()<numOfMines) {

        int randRow = random.nextInt(rows);
        int randCol = random.nextInt(columns);

        Point point = new Point(randRow, randCol);

        if(listWithMines.contains(point))
            continue;
        else
            listWithMines.add(point);
    }

此列表现在包含有地雷的点。 你可以检查 Point(x,y) 是否有这样的地雷:

if(listWithMines.contains(new Point(1, 2))) {...}

您可以使用二维数组代替列表,存储一个布尔值(如果您存储更多状态,则为 int)并进行循环,直到放置 10 个地雷。你应该为你放置的地雷保留一个计数器(placedMines,如 list.size()),并确保你没有将地雷添加到已经有地雷的瓷砖上,并且你增加计数器(placedMines)直到它达到 numOfMines.