2017-04-12 10 views
0

これは船の端が他の船に触れないようになっていますが、何らかの理由で動作しません。私のT形船のために特に。 これはforループの条件と関係していると思いますが、おそらくboat.getLength()+1では十分ではありませんが、他に何を試していいのかわかりません。 私のmainBoardの長さは10x10であり、linecolのパラメータは、ユーザスキャナから得られるものと仮定しています。自然状態のボードは文字 '〜'で初期化されています。各ボートは、それが成功裏に配置されると、その特定のボートに任命されたキャラクターと共に「〜」を変更する。戦艦ゲームで船の周辺を検証するにはどうすればよいですか?

public boolean validateSurrounding(Boat boat, int line, int col) { 

    int i = line; 
    int j = col; 

    for (i = i - 1; i < boat.getLength()+1; i++) { 

     for (j = j - 1; j < boat.getLength()+1; j++) { 
      if (i < 0 || i >= mainBoard.length || j < 0 || j >= mainBoard[0].length) { 
       continue; 
      } 

      if (mainBoard[i][j] != '~') { 
       return false; 
      } 
     } 
    } 

    return true; 
} 

答えて

0

あなたは内側のループの開始条件を損なっています。

int i = line; 
int j = col; 

for (i = i - 1; i < boat.getLength()+1; i++) { 
    for (j = j - 1; j < boat.getLength()+1; j++) { 

外側のループ、jの2回目の反復は、外側のループの最初の実行中に持っていた最後の値である、boat.getLength()+1で開始します。

代わりに、使用:

int i; 
int j; 

for (i = line - 1; i < boat.getLength()+1; i++) { 
    for (j = col - 1; j < boat.getLength()+1; j++) { 
+0

感謝。あなたの提案は私がそれを解決するのを助けました。どうやら、boat.length()の代わりに、それぞれline + 1とcol +1を使用する必要があります。 – PedroQ

関連する問題