2016-09-07 78 views
0

我想提出一個國際象棋比賽,到目前爲止,一切都很好,現在我寫每一條規則語句。問題在於for循環奇怪地行事。它的主教,所以x正在下降,y正在上升。在這一點上它的行爲很奇怪,每當我試着點添加到一個可能的移動For循環,如果行事古怪

for (int i = 0; i < 8; i++) { 
    Point newLoc = new Point(x-i, y+i);    

    if(team.equals("white")) { 
    if(containsPiece(newLoc)) { 
      if(ChessBoard.black.containsKey(newLoc)) { 
       possibilities.put(newLoc, rating); 
       break; 
      } 
      else { 
       break; 
      } 
     } else 
      possibilities.put(newLoc, rating); 
    } 

containsPiece()工作得很好,possibilitiesHashMap我存儲在可能的行動。

我看到的樣子它應該是完美的,因爲如果newLoc中的瓦片是白色的,它不應該將它添加到可能的移動中,並且在該方向之後停止移動。沒有人明白爲什麼它似乎放棄所有加入到possibilities

What it should look like

What it is looking like with the code above

+0

爲什麼會出現在最內層的if/else的兩個條款休息一下? –

+0

只要發現一塊黑色的碎片,你就會跳出循環 - 兩個分支都有一個「中斷」。 – dasblinkenlight

+0

黑色需要休息一下,它不會在那個之後添加任何碎片,而白色需要它,所以它不允許白色碎片取白色。 – TheGamerPlayz

回答

4

i以前可能的行動應該在1開始,不0,因爲當i==0newLoc是主教的立場((x-0,y+0)),所以你從循環中突破,因爲主教是白色的瓷磚。

+0

現在我覺得自己像個白癡。我甚至沒有想到這一點。謝謝 – TheGamerPlayz