JAVA需要一个条件判断整个二维数组是否满

标签 java arrays 2d

我正在制作游戏。在游戏中有一个由单元格填充的网格。每个细胞都有一个伙伴(相同类型的细胞)。总共应该有 24 个单元格,这意味着 12 对不同的单元格。例如,一个单元格可以是类型 1,网格上将有两个类型 1 的单元格。 一直到12型。 我试图用我的代码实现的是随机生成一行和一列,然后在其上放置一个类型 1 的单元格。再次,生成随机行和列并在其上放置类型 1 单元格。 然后增加类型。

现在我正在苦苦挣扎的是确保我的整个网格完全填充单元格的条件。 还有一个条件,确保一旦一个单元格被放置在网格上的一个点上,它就不能被另一个单元格替换。

这是我现在想出的代码。

     int type =1;
    int row=0;
    int column=0;
    board[row][column] = new Cell(this, type, row, column);



    while(board[row][column] != null){

      if(type <=12){



      row = generator.nextInt(4);
      column = generator.nextInt(6);      
      board[row][column] = new Cell(this, type, row, column);
      type++;

        if (type < 13){
      row = generator.nextInt(4);      
      column = generator.nextInt(6);      
      board[row][column] = new Cell(this, type, row, column);


      row = generator.nextInt(4);
      column = generator.nextInt(6);
      board[row][column] = new Cell(this, type, row, column);


      add(board[row][column]);} //Adding a Cell object **board is a 2d array of type Cell**
      }
  }
  }

尽量用最简单的语言解释问题

最佳答案

比随机添加项目更好的方法是以直接的方式填充数组,然后将其随机化,但没有简单的方法可以做到这一点。

您可以做一件等效的事情:创建一个包含所有必需值的 Listrandomly shuffle List,然后从中填充您的数组,将 List 中的条目映射到数组中的行和列:

List<Integer> list = new ArrayList<Integer>(24);

for (int type = 1; type <= 12; type++) {
  //Add each type twice
  list.add(type);
  list.add(type);
}

Collections.shuffle(list);
int[][] board = new int[4][6];

for (int row = 0; row < 4; row++) {
  for (int column = 0; column < 6; column++) {
    int type = list.get(row + column * 4);
    board[row][column] = new Cell(this, type, row, column);
  }
}

行和列到 List 条目的映射并不是那么重要,只要您只使用洗牌后的 List 中的每个条目一次即可,因此您可以这样做:

Iterator<Integer> i = list.iterator();

for (int row = 0; row < 4; row++) {
  for (int column = 0; column < 6; column++) {
    int type = i.next();
    board[row][column] = new Cell(this, type, row, column);
  }
}

关于JAVA需要一个条件判断整个二维数组是否满,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9461166/

相关文章:

c++:检查对象数组中类的对象

c - 如何在c中将一定长度的字符串放入二维数组中

java - 在 Android 中以编程方式更改 DNS

arrays - 如何在没有设置限制的情况下在excel vba中制作数组?

java - 无法使用 $value 获取消息的 MIME 版本

python - 为 for 循环中的列表定义索引范围

python - 在 Python 中类似矩阵的二维数组打印

ios - OpenGL ES 2.0 (iOS) 中的二维绘图

java - Android Espresso 无法输入 TYPE_TEXT_VARIATION_NORMAL?

JavaFX TableColumn 文本换行