2013-10-22 77 views
0
for (int x = 0; x <= battleField.getCols(); x++){ 
       for (int y = 0; y <= battleField.getRows(); y++){ 

        if ((battleField.get(x,y) == team) && ((x + y) 
          != battleField.get(row, col))) 
        { 
           . 
           . 
           . 
        } 
       } 
    } 

battleField.get(row,col)將返回我在網格上的位置現在我的問題是如何跳過我的自我檢查我的位置是什麼?因爲當for循環檢查x和y時,它會遍歷整個網格。我需要做什麼?如何跳過檢查我的位置

+1

爲什麼X + Y是唯一的?對於每一行(行,列)都會有一個(列,行)應該給出相同的值。你能否詳細說明battlefield.get(x,y)? –

回答

0

而不是

((x + y) != battleField.get(row, col)) 

我想你想

(x != row && y != col) 

如果你確實想要第一部分你湊合LD只是添加到您內的開始for循環:

for (int x = 0; x <= battleField.getCols(); x++){ 
      for (int y = 0; y <= battleField.getRows(); y++){ 

       if(x == row && y == col) // This will check if the loop is looking at your position 
        continue; // This will go to the next step in the "y" for loop, essentially skipping the rest of the code in this block 

       if ((battleField.get(x,y) == team) && ((x + y) 
         != battleField.get(row, col))) 
       { 
          . 
          . 
          . 
       } 
      } 

}

1

假設你的當前位置的變量命名爲current_xcurrent_y,那麼你可以做這樣的事情你的循環中......

bool isMyPosition = (x == current_x) && (y == current_y); 

if (!isMyPosition 
    && (battleField.get(x,y) == team) 
    && ((x + y) != battleField.get(row, col))) 
{ 
    ... 
} 
+0

你是正確的,但我只是想要一個更簡單的解決方案,我的問題。謝謝你 –

0

如果(Question.IsAbout(EscapingOnCheck))

大多數語言都有某種continue可以用於條件滿足時逃脫循環。

其他

保存在某些變量的當前位置,並添加另一個嵌套循環(用於調試的緣故),或添加& &條款(更少的代碼的緣故)