2016-04-02 13 views
0

我正在嘗試創建一個掃雷遊戲,對於隨機部分我有一些麻煩。對於一個10乘10格的掃雷艦,我希望能隨機獲得10或者特定數量的炸彈/地雷,但我不確定如何去做。如何用特定數量的true創建一個隨機布爾二維數組?

我有一個2D地雷陣列,如果它包含一個炸彈,它將存儲TRUE。

我知道在一維數組中我可以將總數分解成n個相等部分,然後每個部分有一個TRUE布爾元素。

啊,但它不一定要平均分配。 我也不是很清楚列表,使用列表是解決這個問題的好方法嗎?

+1

讓我們瞭解您已經嘗試到目前爲止 – Maljam

+1

我建議:開始時用一維列表(比方說,ArrayList的''),填寫trues和falses適當數量,使用'Collections.shuffle ()'進行隨機化,然後將這些值移動到二維結構中。 –

回答

0
final int GRID_WIDTH = 10; 
final int GRID_HEIGHT = 10; 
final int BOMB_NUMBER = 10; 
final boolean[][] minesArray = new boolean[GRID_WIDTH][GRID_HEIGHT]; 
for (int i = 0; i < BOMB_NUMBER; i++) { 
    //Get random position for the next bomb 
    Random rand = new Random(); 
    int row = rand.nextInt(GRID_WIDTH); 
    int col = rand.nextInt(GRID_HEIGHT); 
    while(minesArray[row][col]) { //if this position is a bomb 
      //we get new position 
      row = rand.nextInt(GRID_WIDTH); 
      col = rand.nextInt(GRID_HEIGHT); 
    } 
    minesArray[row][col] = true; //make new position is a bomb 
} 
+0

final int GRID_WIDTH = 10; –

相關問題