2016-09-07 5 views
0

Я делаю шахматную игру, и до сих пор все хорошо, и сейчас я пишу правила каждой части. Проблема состоит в том, что цикл for работает нечетно. Его для епископа, так что х идет вниз, а 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() работает просто отлично и possibilities является HashMap я храню возможные хода в.

как я вижу он должен работать идеально, потому что, если плитка на 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==0, newLoc позиция епископа ((x-0,y+0)), поэтому вы выходите из цикла, так как епископ - белая черепица.

+0

Теперь я чувствую себя идиотом. Я даже не думал об этом. благодаря – TheGamerPlayz

 Смежные вопросы

  • Нет связанных вопросов^_^