2016-04-02 7 views
0

私は掃海艇の試合を作成しようとしています。ランダム化のために私はいくつか問題があります。特定の数の真を持つランダムなブール値の2D配列を作成するにはどうすればいいですか?

おそらく10×10のグリッド掃海艇では、ランダムに特定の数の爆弾/鉱山を達成することを望みますが、その方法はわかりません。

私には、爆弾が含まれている場合にTRUEを格納する2D鉱山アレイがあります。

私は1D配列で、n個の等しい部分に分割された要素の総数を持つことができ、1つの部分に1つのTRUEブール要素を持つことができます。

ああ、同じように配布する必要はありません。 私もリストについてはあまりよく分かりませんが、リストを使ってこれを解決するのがよいでしょうか?

+1

あなたは私が提案し、これまで – Maljam

+1

を試してみましたが、どのような私たちを表示: 'Collections.shuffleを使用し、truesとfalsesの適切な数を記入し、(たとえば、' ArrayListの ')一次元のリストから始めます() 'を使用して値を2D構造に移動します。 –

答えて

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; –

関連する問題