JavaFX, События, Булевы События - PullRequest
0 голосов
/ 24 апреля 2020

Так что этот код, без сомнения, беспорядок, но я создаю панель из квадратов, 8x8, такую ​​же, как шахматная доска или что-то в этом роде. И те плитки при нажатии будут менять цвет. Это событие работает отлично.

Однако, что я не могу понять, как это сделать, так это создать, скажем, логическое событие, когда два из этих квадратов изменили цвет, а затем просто сказать, например, путь между квадратами, которые заполняются между ними. Это поиск пути, и, конечно, фактические пути будут не только этим, но ... Я действительно не могу понять это, ха-ха. Любая помощь высоко ценится.

private Parent createContent() {




        root.setPrefSize(800, 800);

        for (int i = 0; i < 8; i++) {
            for (int j = 0; j < 8; j++) {
                Tile tile;
                if(array[i][j] == '\u2B1C'){
                    tile = new Tile(true, i, j);}
                else if (array[i][j] == '\u2B1B'){
                    tile = new Tile(false, i, j);

                }
                else {break;}
                tile.setTranslateX(j * 100);
                tile.setTranslateY(i * 100);

                root.getChildren().add(tile);

                board[j][i] = tile;

            }
        }
        return root;
    }


    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setScene(new Scene(createContent()));
        primaryStage.show();





    }

public Tile(boolean obstacle, int x, int y) {
            this.x = x;
            this.y = y;

            border = new Rectangle(100, 100);
            if(obstacle == true)border.setFill(null);
            if(obstacle == false)border.setFill(Color.BLACK);
            border.setStroke(Color.BLACK);

            text.setFont(Font.font(72));

            setAlignment(Pos.CENTER);
            getChildren().addAll(border, text);

            setOnMouseClicked(event -> {
                if (startFilled && endFilled)
                    return;

                if (event.getButton() == MouseButton.PRIMARY) {
                    if (startFilled && endFilled)
                        return;
                    border.setFill(Color.BLUE);
                    if(startFilled == false) {
                        startFilled = true;
                        startPosition = new int[2];
                        startPosition[0] = x;
                        startPosition[1] = y;
                        return;
                    }
                    if(endFilled == false) endFilled = true; endFill.set(true);
                    endPosition = new int[2];
                    endPosition[0] = x;
                    endPosition[1] = y;




                    }

            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...