JavaFX: вложенные циклы для размещения прямоугольников не работают - PullRequest
0 голосов
/ 16 мая 2019

Я пытаюсь создать шахматную доску, используя циклы for и создавая прямоугольники разного цвета.Я использую два вложенных цикла for: первый, который заботится обо всех строках, начинающихся с черного квадрата, и второй, который заботится обо всех строках, начинающихся с красного квадрата.У меня есть список координат x и два отдельных списка для координат y: y1coords - все координаты y, которые соответствуют строке, начинающейся с черного квадрата, и y2coords - все координаты y, которые соответствуют строке, начинающейся с красного квадрата.

//Nested for loop for every row starting with a black square
List<Double> y1coords = Arrays.asList(0.0,150.0,300.0,450.0);
List<Double> xcoords = Arrays.asList(0.0,75.0,150.0,225.0,300.0,375.0,450.0,525.0);
for (int j=0; j<y1coords.size(); j++)
{
  for (int i=0; i<xcoords.size(); i++)
  {
    if (xcoords.get(i)%2 == 0)
    {
      Rectangle square = new Rectangle(75,75,Color.BLACK);
      square.setX(xcoords.get(i));
      square.setY(y1coords.get(j));
      root.getChildren().add(square);
    }
    else
    {
      Rectangle square = new Rectangle(75,75,Color.RED);
      square.setX(xcoords.get(i));
      square.setY(y1coords.get(j));
      root.getChildren().add(square);
    }
  }
}
//Nested for loop for every row starting with a red square
List<Double> y2coords = Arrays.asList(75.0,225.0,375.0,525.0);
for (int j=0; j<y2coords.size(); j++)
{
  for (int i=0; i<xcoords.size(); i++)
  {
    if (xcoords.get(i)%2 != 0)
    {
      Rectangle square = new Rectangle(75,75,Color.BLACK);
      square.setX(xcoords.get(i));
      square.setX(y2coords.get(j));
      root.getChildren().add(square);
    }
    else
    {
      Rectangle square = new Rectangle(75,75,Color.RED);
      square.setX(xcoords.get(i));
      square.setX(y2coords.get(j));
      root.getChildren().add(square);
    }
  }
}

Я хочу создать красивую шахматную доску, но она дает мне первый ряд полностью черным и не выполняет никаких рядов, начинающихся с красного квадрата.Посетите https://pbs.twimg.com/media/D6szyy7X4AEMGtk.jpg:large, чтобы понять, что я имею в виду.

1 Ответ

0 голосов
/ 19 июля 2019

измените ваш код во втором вложенном цикле

от

square.setX(y2coords.get(j));

до

square.setY(y2coords.get(j));

конечный результат

                if (xcoords.get(i) % 2 != 0) {
                    Rectangle square = new Rectangle(75, 75, Color.BLACK);
                    square.setX(xcoords.get(i));
       /*here*/     square.setY(y2coords.get(j));
                    root.getChildren().add(square);
                } else {
                    Rectangle square = new Rectangle(75, 75, Color.RED);
                    square.setX(xcoords.get(i));
     /*and here*/   square.setY(y2coords.get(j));
                    root.getChildren().add(square);
                }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...