package controller; import javafx.animation.KeyFrame; import javafx.animation.Timeline; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.control.Button; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.image.WritableImage; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.scene.shape.Rectangle; import javafx.scene.text.Font; import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.util.Duration; import model.Case; import model.Map; import java.net.URL; import java.util.ResourceBundle; public class GamePlayController implements Initializable { private final int tileSize = 20 ; @FXML private ImageView persoImageView; public AnchorPane FirstAnchor; PageGameController pageGameController; PersoController persoController; Case caseActuelle; MapController mapController; Case caseAncienne; String pathPerso; Image imagePerso; @Override public void initialize(URL url, ResourceBundle resourceBundle) { } public void spawnPlayer(int difficulty, int perso) throws NullPointerException { if(persoImageView != null) { System.out.println("persoImageView is null"); }else { System.out.println("persoImageView is not null"); System.out.println(persoImageView); } persoController = new PersoController(); persoController.createPerso(difficulty, perso); mapController = persoController.getMapController(); caseActuelle = mapController.getStartCase(); pathPerso = persoController.getPath(); imagePerso = new Image(getClass().getClassLoader().getResource(pathPerso+"2.png").toExternalForm()); System.out.println(pathPerso+"2.png"); persoImageView.setLayoutY(persoController.getY()); persoImageView.setLayoutX(persoController.getX()); persoImageView.setFitHeight(32); persoImageView.setFitWidth(32); persoImageView.setImage(imagePerso); } public void movePlayerNextCase() throws InterruptedException { Map map = persoController.getMap(); caseAncienne = caseActuelle; caseActuelle = mapController.getNextCase(caseActuelle); Timeline timeline = new Timeline(); timeline.setCycleCount(1); //animation déplacement vers la droite if(caseActuelle.getCoordX() > caseAncienne.getCoordX()){ Image imagePerso7 = new Image(getClass().getClassLoader().getResource(pathPerso+"7.png").toExternalForm()); Image imagePerso8 = new Image(getClass().getClassLoader().getResource(pathPerso+"8.png").toExternalForm()); Image imagePerso9 = new Image(getClass().getClassLoader().getResource(pathPerso+"9.png").toExternalForm()); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { persoImageView.setImage(imagePerso8); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { persoImageView.setImage(imagePerso7); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { persoImageView.setImage(imagePerso9); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { persoImageView.setImage(imagePerso7); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { persoImageView.setImage(imagePerso9); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { persoImageView.setImage(imagePerso7); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { persoImageView.setImage(imagePerso9); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { persoImageView.setImage(imagePerso8); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.play(); } //animation déplacement vers la gauche if(caseActuelle.getCoordX() < caseAncienne.getCoordX()){ Image imagePerso4 = new Image(getClass().getClassLoader().getResource(pathPerso+"4.png").toExternalForm()); Image imagePerso5 = new Image(getClass().getClassLoader().getResource(pathPerso+"5.png").toExternalForm()); Image imagePerso6 = new Image(getClass().getClassLoader().getResource(pathPerso+"6.png").toExternalForm()); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { persoImageView.setImage(imagePerso5); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { persoImageView.setImage(imagePerso4); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { persoImageView.setImage(imagePerso6); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { persoImageView.setImage(imagePerso4); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { persoImageView.setImage(imagePerso6); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { persoImageView.setImage(imagePerso4); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { persoImageView.setImage(imagePerso6); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { persoImageView.setImage(imagePerso5); persoImageView.setLayoutX(persoImageView.getLayoutX()+4); })); timeline.play(); } //animation déplacement vers le haut if(caseActuelle.getCoordY() < caseAncienne.getCoordY()){ Image imagePerso10 = new Image(getClass().getClassLoader().getResource(pathPerso+"10.png").toExternalForm()); Image imagePerso11 = new Image(getClass().getClassLoader().getResource(pathPerso+"11.png").toExternalForm()); Image imagePerso12 = new Image(getClass().getClassLoader().getResource(pathPerso+"12.png").toExternalForm()); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { persoImageView.setImage(imagePerso11); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { persoImageView.setImage(imagePerso10); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { persoImageView.setImage(imagePerso12); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { persoImageView.setImage(imagePerso10); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { persoImageView.setImage(imagePerso12); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { persoImageView.setImage(imagePerso10); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { persoImageView.setImage(imagePerso12); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { persoImageView.setImage(imagePerso11); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.play(); } //animation déplacement vers le bas if(caseActuelle.getCoordY() > caseAncienne.getCoordY()){ Image imagePerso1 = new Image(getClass().getClassLoader().getResource(pathPerso+"1.png").toExternalForm()); Image imagePerso2 = new Image(getClass().getClassLoader().getResource(pathPerso+"2.png").toExternalForm()); Image imagePerso3 = new Image(getClass().getClassLoader().getResource(pathPerso+"3.png").toExternalForm()); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(200), event -> { persoImageView.setImage(imagePerso2); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(300), event -> { persoImageView.setImage(imagePerso1); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(400), event -> { persoImageView.setImage(imagePerso3); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(500), event -> { persoImageView.setImage(imagePerso1); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(600), event -> { persoImageView.setImage(imagePerso3); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(700), event -> { persoImageView.setImage(imagePerso1); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> { persoImageView.setImage(imagePerso3); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> { persoImageView.setImage(imagePerso2); persoImageView.setLayoutY(persoImageView.getLayoutY()+4); })); timeline.play(); } } public void lancerDe(ActionEvent actionEvent) throws InterruptedException { movePlayerNextCase(); System.out.println("lancer de"); } public AnchorPane mapInitialisation(int difficulty, int perso) { spawnPlayer(difficulty, perso); System.out.println("difficulty : " + difficulty); if(difficulty == 1){ Image w = new Image("/image/terrain/chemin.png"); Image b = new Image("/image/terrain/herbe.png"); Image[][] grid = { {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b} }; GridPane gridPane = new GridPane(); // for visualizing the different squares: gridPane.setStyle("-fx-background-color: grey;"); for (int y = 0 ; y < grid.length ; y++) { for (int x = 0 ; x < grid[y].length ; x++) { ImageView imageView = new ImageView(grid[y][x]); imageView.setFitWidth(tileSize); imageView.setFitHeight(tileSize); gridPane.add(imageView, x, y); } } AnchorPane FirstAnchor = new AnchorPane(); FirstAnchor.getChildren().add(gridPane); return FirstAnchor; } else if(difficulty == 2){ Image w = new Image("/image/terrain/chemin.png"); Image b = new Image("/image/terrain/herbe.png"); Image[][] grid = { {w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b} }; GridPane gridPane = new GridPane(); // for visualizing the different squares: gridPane.setStyle("-fx-background-color: grey;"); for (int y = 0 ; y < grid.length ; y++) { for (int x = 0 ; x < grid[y].length ; x++) { ImageView imageView = new ImageView(grid[y][x]); imageView.setFitWidth(tileSize); imageView.setFitHeight(tileSize); gridPane.add(imageView, x, y); } } AnchorPane FirstAnchor = new AnchorPane(); FirstAnchor.getChildren().add(gridPane); return FirstAnchor; } else{ Image w = new Image("/image/terrain/chemin.png"); Image b = new Image("/image/terrain/herbe.png"); Image[][] grid = { {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,w,w,w,w,w,w,w,w,w,w,w,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b,b}, {b,b,b,b,b,b,b,b,b,b,b,w,w,w,b,b,b,b,b,b,b,b,b,b,b,b,b,b,w,w} }; GridPane gridPane = new GridPane(); // for visualizing the different squares: gridPane.setStyle("-fx-background-color: grey;"); for (int y = 0 ; y < grid.length ; y++) { for (int x = 0 ; x < grid[y].length ; x++) { ImageView imageView = new ImageView(grid[y][x]); imageView.setFitWidth(tileSize); imageView.setFitHeight(tileSize); gridPane.add(imageView, x, y); } } AnchorPane FirstAnchor = new AnchorPane(); FirstAnchor.getChildren().add(gridPane); return FirstAnchor; } } private Image createImage(Color color) { WritableImage image = new WritableImage(1, 1); image.getPixelWriter().setColor(0, 0, color); return image ; } }