我如何计算我的扫雷代码中的炸弹数量?
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.
很好,我尝试创建一个更简单的扫雷游戏,但遇到了一个主要问题......
我无法计算炸弹的数量并将其打印在 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.