Java扫雷游戏问题。游戏开始时隐藏地雷?
当游戏开始时,我已经成功地启动了一个雷区,10枚地雷随机散布在雷区上。然而,当游戏开始时,我很难向用户隐藏这些地雷。如你所知,扫雷舰的目的是在看不到地雷的情况下找到地雷的位置。我需要帮助找出如何隐藏地雷 下面是我为网格类编写的代码,该类启动网格,并包含一个方法,该方法用地雷填充网格。我怎样才能隐藏这些地雷,并且只在单击它们时才显示它们?谢谢你的帮助Java扫雷游戏问题。游戏开始时隐藏地雷?,java,algorithm,minesweeper,Java,Algorithm,Minesweeper,当游戏开始时,我已经成功地启动了一个雷区,10枚地雷随机散布在雷区上。然而,当游戏开始时,我很难向用户隐藏这些地雷。如你所知,扫雷舰的目的是在看不到地雷的情况下找到地雷的位置。我需要帮助找出如何隐藏地雷 下面是我为网格类编写的代码,该类启动网格,并包含一个方法,该方法用地雷填充网格。我怎样才能隐藏这些地雷,并且只在单击它们时才显示它们?谢谢你的帮助 public class Grid { private int[][] grid; private boolean isHidden; pr
public class Grid {
private int[][] grid;
private boolean isHidden;
private int rows;
private final int columns;
private final int mines;
public Grid() {
this.rows = 8;
this.columns = 8;
this.mines = 10;
this.grid = new int[rows][columns];
}
public int[][] getGrid() {
return grid;
}
public int getRows() {
return rows;
}
public int getColumns() {
return columns;
}
public void fillGrid() {
Random ranGen = new Random();
for(int i = 0; i < this.mines; ) {
int row = ranGen.nextInt(this.rows - 1);
int column = ranGen.nextInt(this.columns - 1);
if(grid[row][column] != MinesweeperGUI.MINE) {
grid[row][column] = MinesweeperGUI.MINE;
i++;
}
}
}
公共类网格{
私有int[][]网格;
私人布尔伊希登;
私有int行;
私有final int列;
私人采矿;
公共电网(){
这一行=8;
此值为8;
这个数值=10;
this.grid=newint[行][列];
}
公共int[]getGrid(){
返回网格;
}
公共int getRows(){
返回行;
}
公共int getColumns(){
返回列;
}
公共空间填充网格(){
Random range n=新的Random();
for(int i=0;i
您应该有两个矩阵:一个用于矿山(MineMatrix
),另一个用于跟踪用户单击(UserClickMatrix
)
在游戏开始时,您应该只显示最终用户
UserClickMatrix
,并使用NotClicked
初始化所有单元格。每当用户单击单元格时,将单元格的状态更改为Clicked
。然后,从UserClickMatrix
中获取单元格索引,并对照MineMatrix(MineMatrix)进行检查[clickedRow][clickedColumn]==MINE
)。如果条件评估为TRUE,游戏结束。您应该有两个矩阵:一个用于地雷(MineMatrix
),另一个用于跟踪用户单击(UserClickMatrix
)
在游戏开始时,您应该只显示最终用户
UserClickMatrix
,并使用NotClicked
初始化所有单元格。每当用户单击单元格时,将单元格的状态更改为Clicked
。然后,从UserClickMatrix
中获取单元格索引,并对照MineMatrix(MineMatrix)进行检查[clickedRow][clickedColumn]==我的
)。如果条件为真,游戏结束。很多方法。这里最容易实现的是一个布尔数组:打开和未打开。如果未打开,则显示一个闭合的正方形。否则,显示有什么
另一种方法是将此方法更面向对象,并创建一个平铺类:它包含一个布尔值表示矿井,一个枚举表示打开/关闭/标记/问号。很多方法。这里最容易实现的是一个布尔值的二维数组:打开和未打开。如果未打开,则显示一个闭合的正方形。否则,显示有什么
另一种方法是将其更面向对象,并创建一个平铺类:它为矿井保存一个布尔值,为打开/关闭/标记/问号保存一个枚举。为什么您的网格矩阵不包含GridElement类的元素?这个GridElement类可以有一个属性“bool visible”.int的网格矩阵不太好。请考虑更多OO。为什么网格矩阵不包含GridElement类的元素?此GridElement类可以具有属性“bool visible”.int的网格矩阵不太好。多想想OO。这让我想起了,我必须用Java为大学的一个实验室编写“扫雷器”。有道理,这是我参加的大学分配的项目。这让我想起了,我必须用Java为大学的一个实验室编写“扫雷器”。有道理,这是我参加的大学分配的项目。lolI尝试过早些时候实现这一点,但我们有一个严格的需要遵循的方向列表。我尝试创建一个正方形类来表示网格中的元素。我们的教授要求我们为网格创建一个2d整数数组…如果你问我的话,这是很愚蠢的。我们的教授可能用C^^思考。我应该建议Pimgd的答案是最好的。我尝试过了为了更早地实现这一点,我们有一个严格的方向列表,我们需要遵循。我尝试创建一个正方形类来表示网格中的元素。我们的教授要求我们为网格创建一个2d整数数组…如果你问我的话,这是非常愚蠢的。我们的教授可能用C^^思考。我应该建议Pimgd的答案是最好的。而不是谢谢你!实现这些方法非常有效。谢谢你的帮助。谢谢你!实现这些方法非常有效。谢谢你的帮助