2011-08-05 14 views
1

こんにちは、私はほぼクラスの地雷探偵のゲームを作成するこのプログラムで行われています。それは完全にコンパイルされて実行され、GUIクライアントプログラムにゲームが表示されますが、1つの問題が発生します。鉱山の地雷数Java

再生時に、隣接する鉱山が1つ以上ある場合はa 1が表示され、周囲の8つの正方形のいずれかに実際に鉱山がある場合は0が表示されることがあります。どんな助けや提案も喜んで感謝しています!

private void countAdjacentMines() 
{   
    // TO DO: STUDENT CODE HERE 
    for (int i = 0; i < mineField.length; i++) 
    { 
     for (int j = 0; j < mineField.length; j++) 
     { 
      if (!(mineField[i][j].getIsMine())) 
      { 
       int count = 0;      
       for (int p = i -1; p <= i + 1; p++) 
       {   
        for (int q = j - 1; q < j + 1; q++) 
        { 
         if (0 <= p && p < mineField.length && 0 <= q && q < mineField.length) 
         { 
          if (mineField[p][q].getIsMine()) 
           count++; 
         } // end if 
        } // end for 
       } // end for 

      mineField[i][j].setAdjacentMines(count); 
      } // end if 

     } // end for loop rows 
    } // end for loop columns 
} // end countAdjacentMines 
+1

は、なぜあなたは2回)(getIsMineをチェックするべきか?隣接する鉱山を数えるだけでいいのはなぜですか?このコードは、特定の欠陥を指摘するにはあまりにも壊れているようです。 –

+1

これは宿題の場合、そのようにタグ付けしてください(これはあなたの質問から回答を除外しません)。 –

+0

二番目のforループを 'for(int j = 0; j Briguy37

答えて

3

内部ループの条件はオフです。

for (int q = j - 1; q < j + 1; q++) 

for (int q = j - 1; q <= j + 1; q++) 
         ^^ 
+0

これは問題のようです。 – Nicholas

+0

うわー、私はダム、感謝を感じる! –

関連する問題