2016-09-07 40 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