Так что этот код, без сомнения, беспорядок, но я создаю панель из квадратов, 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;
}
});
}