为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

弑天下 2023-07-28 16:45:10
好吧,我尝试创建一个更简单的扫雷游戏,但遇到了一个主要问题..我无法计算炸弹的数量并将其打印在一个关于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);            }        }
查看完整描述

1 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

据我了解,您可以使用随机生成器来决定该图块在运行时是否是炸弹。这样做你无法真正知道你的游戏中有多少个地雷。我认为你应该在游戏开始时决定地雷的数量,并将它们随机放置到你的游戏板上(你可以根据难度级别选择数量)。


编辑


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


    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))) {...}

您可以使用 2D 数组代替列表,存储布尔值(如果存储更多状态,则存储 int)并进行循环,直到放置 10 个地雷。您应该保留您放置的地雷的计数器(placedMines,如 list.size()),并确保您不会将地雷添加到已经有地雷的图块中,并增加计数器(placedMines)直到它达到地雷数量。


查看完整回答
反对 回复 2023-07-28
  • 1 回答
  • 0 关注
  • 71 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信