For 循环和 if 语句表现奇怪

For loop and if statements acting odd

我正在制作国际象棋游戏,到目前为止一切都很好,我现在正在编写每件棋子的规则。问题是 for 循环的行为很奇怪。它是给主教的,所以 x 下降,y 上升。此时,每当我尝试将点添加到可能的移动时,它都会表现得很奇怪

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

的所有先前可能的移动

i 应该从 1 开始,而不是 0,因为当 i==0 时,newLoc 是主教的位置((x-0,y+0)), 所以你从循环中跳出,因为象是一个白色的方块。