Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java扫雷游戏问题。游戏开始时隐藏地雷?_Java_Algorithm_Minesweeper - Fatal编程技术网

Java扫雷游戏问题。游戏开始时隐藏地雷?

Java扫雷游戏问题。游戏开始时隐藏地雷?,java,algorithm,minesweeper,Java,Algorithm,Minesweeper,当游戏开始时,我已经成功地启动了一个雷区,10枚地雷随机散布在雷区上。然而,当游戏开始时,我很难向用户隐藏这些地雷。如你所知,扫雷舰的目的是在看不到地雷的情况下找到地雷的位置。我需要帮助找出如何隐藏地雷 下面是我为网格类编写的代码,该类启动网格,并包含一个方法,该方法用地雷填充网格。我怎样才能隐藏这些地雷,并且只在单击它们时才显示它们?谢谢你的帮助 public class Grid { private int[][] grid; private boolean isHidden; pr

当游戏开始时,我已经成功地启动了一个雷区,10枚地雷随机散布在雷区上。然而,当游戏开始时,我很难向用户隐藏这些地雷。如你所知,扫雷舰的目的是在看不到地雷的情况下找到地雷的位置。我需要帮助找出如何隐藏地雷

下面是我为网格类编写的代码,该类启动网格,并包含一个方法,该方法用地雷填充网格。我怎样才能隐藏这些地雷,并且只在单击它们时才显示它们?谢谢你的帮助

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的答案是最好的。而不是谢谢你!实现这些方法非常有效。谢谢你的帮助。谢谢你!实现这些方法非常有效。谢谢你的帮助