for循环和if语句表示奇数

时间:2016-09-07 10:10:40

标签: java for-loop point chess

我正在制作国际象棋游戏,到目前为止一切都很好,我现在正在编写每件作品的规则。问题是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

的所有先前可能的移动

What it should look like

What it is looking like with the code above

1 个答案:

答案 0 :(得分:4)

i应该从1开始,而不是0,因为当i==0时,newLoc是主教的位置((x-0,y+0)) ,所以你打破了循环,因为主教是一块白色瓷砖。