diff --git a/code/ressources/fxml/MainPage.fxml b/code/ressources/fxml/MainPage.fxml index 14124f6..241b027 100644 --- a/code/ressources/fxml/MainPage.fxml +++ b/code/ressources/fxml/MainPage.fxml @@ -17,6 +17,16 @@ AnchorPane.topAnchor="0.0"> + + + + + + + + diff --git a/code/ressources/fxml/viewAvatar.fxml b/code/ressources/fxml/viewAvatar.fxml new file mode 100644 index 0000000..4c77c9a --- /dev/null +++ b/code/ressources/fxml/viewAvatar.fxml @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/code/ressources/fxml/viewGame.fxml b/code/ressources/fxml/viewGame.fxml index 52fa39f..4aca4fc 100644 --- a/code/ressources/fxml/viewGame.fxml +++ b/code/ressources/fxml/viewGame.fxml @@ -11,37 +11,38 @@ - + + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/ressources/image/personnage/Perso2.1.png b/code/ressources/image/personnage/Perso2.1.png new file mode 100644 index 0000000..6b4f8f2 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.1.png differ diff --git a/code/ressources/image/personnage/Perso2.10.png b/code/ressources/image/personnage/Perso2.10.png new file mode 100644 index 0000000..76eafb9 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.10.png differ diff --git a/code/ressources/image/personnage/Perso2.11.png b/code/ressources/image/personnage/Perso2.11.png new file mode 100644 index 0000000..260cf3e Binary files /dev/null and b/code/ressources/image/personnage/Perso2.11.png differ diff --git a/code/ressources/image/personnage/Perso2.12.png b/code/ressources/image/personnage/Perso2.12.png new file mode 100644 index 0000000..e8ac4e1 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.12.png differ diff --git a/code/ressources/image/personnage/Perso2.2.png b/code/ressources/image/personnage/Perso2.2.png new file mode 100644 index 0000000..df6126a Binary files /dev/null and b/code/ressources/image/personnage/Perso2.2.png differ diff --git a/code/ressources/image/personnage/Perso2.3.png b/code/ressources/image/personnage/Perso2.3.png new file mode 100644 index 0000000..e3b6847 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.3.png differ diff --git a/code/ressources/image/personnage/Perso2.4.png b/code/ressources/image/personnage/Perso2.4.png new file mode 100644 index 0000000..86e9fe7 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.4.png differ diff --git a/code/ressources/image/personnage/Perso2.5.png b/code/ressources/image/personnage/Perso2.5.png new file mode 100644 index 0000000..d6deb75 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.5.png differ diff --git a/code/ressources/image/personnage/Perso2.6.png b/code/ressources/image/personnage/Perso2.6.png new file mode 100644 index 0000000..1f2f7ef Binary files /dev/null and b/code/ressources/image/personnage/Perso2.6.png differ diff --git a/code/ressources/image/personnage/Perso2.7.png b/code/ressources/image/personnage/Perso2.7.png new file mode 100644 index 0000000..ca47915 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.7.png differ diff --git a/code/ressources/image/personnage/Perso2.8.png b/code/ressources/image/personnage/Perso2.8.png new file mode 100644 index 0000000..a93e049 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.8.png differ diff --git a/code/ressources/image/personnage/Perso2.9.png b/code/ressources/image/personnage/Perso2.9.png new file mode 100644 index 0000000..a2a7518 Binary files /dev/null and b/code/ressources/image/personnage/Perso2.9.png differ diff --git a/code/ressources/image/terrain/arbre1b.png b/code/ressources/image/terrain/arbre1b.png new file mode 100644 index 0000000..b2c906d Binary files /dev/null and b/code/ressources/image/terrain/arbre1b.png differ diff --git a/code/ressources/image/terrain/arbre1h.png b/code/ressources/image/terrain/arbre1h.png new file mode 100644 index 0000000..7962c8a Binary files /dev/null and b/code/ressources/image/terrain/arbre1h.png differ diff --git a/code/src/controller/GameConfigMenuController.java b/code/src/controller/GameConfigMenuController.java index 66c736e..0fda1df 100644 --- a/code/src/controller/GameConfigMenuController.java +++ b/code/src/controller/GameConfigMenuController.java @@ -73,7 +73,7 @@ public class GameConfigMenuController implements Initializable { void launchGame(MouseEvent event) throws Exception { AnchorPane pane = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/viewGame.fxml"))); GamePlayController gm = new GamePlayController(); - AnchorPane gp = gm.mapInitialisation(this.difficulty); + AnchorPane gp = gm.mapInitialisation(this.difficulty, this.personnage); levelRoot.getChildren().addAll(gp, pane); } diff --git a/code/src/controller/GamePlayController.java b/code/src/controller/GamePlayController.java index 7fa0234..449b16a 100644 --- a/code/src/controller/GamePlayController.java +++ b/code/src/controller/GamePlayController.java @@ -1,100 +1,347 @@ 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.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.io.IOException; import java.net.URL; +import java.util.Objects; import java.util.ResourceBundle; public class GamePlayController implements Initializable { - private final int tileSize = 20 ; + private final int tileSize = 20 ; - private AnchorPane FirstAnchor; + public ImageView persoImageView; + @FXML public AnchorPane levelRoot; - @Override - public void initialize(URL url, ResourceBundle resourceBundle) { + PageGameController pageGameController; - } + private final Image w = new Image("/image/terrain/chemin.png"); + private final Image b = new Image("/image/terrain/herbe.png"); + private final Image a = new Image("/image/terrain/arbre1h.png"); + private final Image c = new Image("/image/terrain/arbre1b.png"); - public AnchorPane mapInitialisation(int difficulty){ + private final PersoController persoController = new PersoController(); + Case caseActuelle; + MapController mapController; + Case caseAncienne; + String pathPerso; + Image imagePerso; - if(difficulty == 1){ - Image w = new Image("/image/terrain/chemin.png"); - Image b = new Image("/image/terrain/herbe.png"); + @FXML + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + } - 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} - - }; + public AnchorPane spawnPlayer(int difficulty, int perso) throws NullPointerException, IOException { + persoController.createPerso(difficulty, perso); + + mapController = persoController.getMapController(); + caseActuelle = mapController.getStartCase(); + pathPerso = persoController.getPath() + "2.png"; + System.out.println(pathPerso); + AnchorPane test = new AnchorPane(); + persoImageView = new ImageView(new Image(pathPerso)); + test.getChildren().add(persoImageView); + return test; + + /* + persoImageView.setLayoutY(persoController.getY()); + persoImageView.setLayoutX(persoController.getX()); + persoImageView.setFitHeight(32); + persoImageView.setFitWidth(32); + persoImageView.setImage(new Image(pathPerso)); + */ + } - GridPane gridPane = new GridPane(); + 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()){ + System.out.println(pathPerso + "7.png"); + Image imagePerso7 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "7.png")).toExternalForm()); + Image imagePerso8 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "8.png")).toExternalForm()); + Image imagePerso9 = new Image(Objects.requireNonNull(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(); + } + } - // for visualizing the different squares: + public void lancerDe(ActionEvent actionEvent) throws InterruptedException { + movePlayerNextCase(); + System.out.println("lancer de"); + } - 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); + public AnchorPane mapInitialisation(int difficulty, int perso) throws IOException { + + if(difficulty == 1){ + + 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} + + }; + + Image[][] grid2 = { + {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,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,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,b,b,b,b,b,b,b,b,b,b,b,b}, + {b,b,b,b,a,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,c,b,b,b,b,b,b,b,b,b,b,b,b,b,b,a,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,c,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,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,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,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,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,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,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,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,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,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); + for (int y = 0 ; y < grid2.length ; y++) { + for (int x = 0 ; x < grid2[y].length ; x++) { + if(grid2[y][x] == b) continue; + ImageView imageView = new ImageView(grid2[y][x]); + imageView.setFitWidth(tileSize); + imageView.setFitHeight(tileSize); + gridPane.add(imageView, x, y); + } + } - return FirstAnchor; + AnchorPane FirstAnchor = new AnchorPane(); + FirstAnchor.getChildren().addAll(gridPane,spawnPlayer(difficulty, perso)); + 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}, @@ -147,8 +394,11 @@ public class GamePlayController implements Initializable { AnchorPane FirstAnchor = new AnchorPane(); FirstAnchor.getChildren().add(gridPane); + System.out.println("difficulty : " + difficulty); - return FirstAnchor; + spawnPlayer(difficulty, perso); + + return FirstAnchor; } else{ @@ -207,6 +457,10 @@ public class GamePlayController implements Initializable { AnchorPane FirstAnchor = new AnchorPane(); FirstAnchor.getChildren().add(gridPane); + System.out.println("difficulty : " + difficulty); + + spawnPlayer(difficulty, perso); + return FirstAnchor; } diff --git a/code/src/controller/MainPageController.java b/code/src/controller/MainPageController.java index 3f78b2c..fbbb4f7 100644 --- a/code/src/controller/MainPageController.java +++ b/code/src/controller/MainPageController.java @@ -7,7 +7,9 @@ import javafx.scene.control.Button; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; +import launcher.Main; +import java.io.IOException; import java.net.URL; import java.util.Objects; import java.util.ResourceBundle; @@ -29,11 +31,6 @@ public class MainPageController implements Initializable { @FXML private ImageView loadGame; - @FXML - void exitGame(MouseEvent event) { - System.exit(0); - } - @Override public void initialize(URL url, ResourceBundle resourceBundle) { @@ -50,4 +47,15 @@ public class MainPageController implements Initializable { AnchorPane pane = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/GameConfigurationMenu.fxml"))); mainRoot.getChildren().setAll(pane); } + + @FXML + void exitGame(MouseEvent event) { + try{ + Main.serialize(); + } + catch(IOException e){ + //System.out.println("Could not save the progress :("); + } + System.exit(0); + } } diff --git a/code/src/controller/MapController.java b/code/src/controller/MapController.java new file mode 100644 index 0000000..dde907c --- /dev/null +++ b/code/src/controller/MapController.java @@ -0,0 +1,104 @@ +package controller; + +import javafx.fxml.Initializable; +import model.Case; +import model.Map; + +public class MapController implements Initializable { + + public Map map; + + @Override + public void initialize(java.net.URL location, java.util.ResourceBundle resources) { + + } + + public void createMap(int difficulty) { + System.out.println(difficulty); + if (difficulty == 1) { + + this.map = new Map(32,30); + Case case1 = new Case(1,2,2, true, false,map); + Case case2 = new Case(2,3,2, false, false,map); + Case case3 = new Case(3,4,2, false, false,map); + Case case4 = new Case(4,5,2, false, false,map); + Case case5 = new Case(5,5,3, false, false,map); + Case case6 = new Case(6,5,4, false, false,map); + Case case7 = new Case(7,5,5, false, false,map); + Case case8 = new Case(8,5,6, false, false,map); + Case case9 = new Case(9,5,7, false, false,map); + Case case10 = new Case(10,5,8, false, false,map); + map.addCase(case1); + map.addCase(case2); + map.addCase(case3); + map.addCase(case4); + map.addCase(case5); + map.addCase(case6); + map.addCase(case7); + map.addCase(case8); + map.addCase(case9); + map.addCase(case10); + } + if (difficulty == 2) { + map = new Map(32,30); + Case case1 = new Case(1,2,2, true, false,map); + Case case2 = new Case(2,3,2, false, false,map); + Case case3 = new Case(3,4,2, false, false,map); + Case case4 = new Case(4,5,2, false, false,map); + Case case5 = new Case(5,5,3, false, false,map); + Case case6 = new Case(6,5,4, false, false,map); + Case case7 = new Case(7,5,5, false, false,map); + Case case8 = new Case(8,5,6, false, false,map); + Case case9 = new Case(9,5,7, false, false,map); + Case case10 = new Case(10,5,8, false, false,map); + map.addCase(case1); + map.addCase(case2); + map.addCase(case3); + map.addCase(case4); + map.addCase(case5); + map.addCase(case6); + map.addCase(case7); + map.addCase(case8); + map.addCase(case9); + map.addCase(case10); + } + if (difficulty == 3) { + map = new Map(32,30); + Case case1 = new Case(1,2,2, true, false,map); + Case case2 = new Case(2,3,2, false, false,map); + Case case3 = new Case(3,4,2, false, false,map); + Case case4 = new Case(4,5,2, false, false,map); + Case case5 = new Case(5,5,3, false, false,map); + Case case6 = new Case(6,5,4, false, false,map); + Case case7 = new Case(7,5,5, false, false,map); + Case case8 = new Case(8,5,6, false, false,map); + Case case9 = new Case(9,5,7, false, false,map); + Case case10 = new Case(10,5,8, false, false,map); + map.addCase(case1); + map.addCase(case2); + map.addCase(case3); + map.addCase(case4); + map.addCase(case5); + map.addCase(case6); + map.addCase(case7); + map.addCase(case8); + map.addCase(case9); + map.addCase(case10); + } + if (difficulty != 1 && difficulty != 2 && difficulty != 3) { + System.out.println("Difficulty not found"); + } + } + public Map getMap(){ + return this.map; + } + public Case getCaseStart(){ + return map.getStartCase(); + } + public Case getNextCase(Case c){ + return map.getNextCase(c); + } + public Case getStartCase(){ + return map.getStartCase(); + } +} diff --git a/code/src/controller/PageGameController.java b/code/src/controller/PageGameController.java new file mode 100644 index 0000000..840e19f --- /dev/null +++ b/code/src/controller/PageGameController.java @@ -0,0 +1,234 @@ +package controller; + +import javafx.animation.Animation; +import javafx.animation.KeyFrame; +import javafx.animation.Timeline; +import javafx.animation.Transition; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.Initializable; +import javafx.scene.control.Button; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.util.Duration; +import model.Avatar; +import model.Case; +import model.Map; + +import java.net.URL; +import java.util.ResourceBundle; + +public class PageGameController implements Initializable { + + @FXML + private ImageView map; + + @FXML + private Button boutonDe; + + @FXML + private ImageView persoImageView; + + PersoController persoController; + Case caseActuelle; + MapController mapController; + Case caseAncienne; + String pathPerso; + Image imagePerso; + + public void spawnPlayer(ImageView ImageView, int difficulty) { + if(persoImageView != null) { + System.out.println("persoImageView is null"); + }else { + System.out.println("persoImageView is not null"); + } + this.persoImageView = ImageView; + persoController = new PersoController(); + persoController.createPerso(difficulty, 1); + mapController = persoController.getMapController(); + caseActuelle = mapController.getStartCase(); + pathPerso = persoController.getPath(); + imagePerso = new Image(getClass().getClassLoader().getResource(pathPerso+"2.png").toExternalForm()); + persoImageView.setLayoutY(persoController.getY()); + persoImageView.setLayoutX(persoController.getX()); + persoImageView.setFitHeight(32); + persoImageView.setFitWidth(32); + persoImageView.setImage(imagePerso); + + } + + public void movePlayerNextCase() throws InterruptedException { + mapController = persoController.getMapController(); + 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(); + } + } + + @Override + public void initialize(URL url, ResourceBundle resourceBundle) { + } + + public void lancerDe(ActionEvent actionEvent) throws InterruptedException { + movePlayerNextCase(); + System.out.println("lancer de"); + } +} diff --git a/code/src/controller/PersoController.java b/code/src/controller/PersoController.java new file mode 100644 index 0000000..6769098 --- /dev/null +++ b/code/src/controller/PersoController.java @@ -0,0 +1,64 @@ +package controller; + +import model.Avatar; +import model.Map; + +public class PersoController { + + Avatar avatar; + MapController mc; + private int test = 2; + + private Map map; + + public void createPerso(int difficulty, int perso) { + mc = new MapController(); + mc.createMap(difficulty); + this.map = mc.getMap(); + System.out.println(map); + test = 14; + if (perso == 1) { + avatar = new Avatar(1, "image/personnage/Perso1."); + System.out.println("Perso 1"); + } + if(perso == 2){ + avatar = new Avatar(2, "image/personnage/Perso2."); + System.out.println("Perso 2"); + } + if(perso == 3){ + avatar = new Avatar(3, "image/personnage/Perso3."); + System.out.println("Perso 3"); + } + if(perso != 1 && perso != 2 && perso != 3){ + System.out.println("Perso non reconnu"); + } + if (avatar == null) { + System.out.println("Erreur avatar"); + } else { + System.out.println("Avatar créé"); + } + } + + public Map getMap() { + System.out.println(test); + return this.map; + } + + public MapController getMapController() { + return mc; + } + + public String getPath(){ + System.out.println(avatar.getImage()); + return avatar.getImage(); + } + + public int getX(){ + return avatar.getCoordX(); + + } + + public int getY(){ + return avatar.getCoordY(); + } +} diff --git a/code/src/launcher/Main.java b/code/src/launcher/Main.java index b6859ae..cf6c039 100644 --- a/code/src/launcher/Main.java +++ b/code/src/launcher/Main.java @@ -23,6 +23,8 @@ public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception { + deserialize(); + Parent root = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MainPage.fxml"))); primaryStage.setTitle("The Adventurer"); primaryStage.setScene(new Scene(root, 900, 600)); @@ -42,39 +44,15 @@ public class Main extends Application { song.addList(song3); song.addList(song4); song.play(); - //fin musique - //début map - //Map map = new Map(30,5,5,20,20); - Map map = new Map(32,30); - Case case1 = new Case(1,2,2, true, false,map); - Case case2 = new Case(2,3,2, false, false,map); - Case case3 = new Case(3,4,2, false, false,map); - Case case4 = new Case(4,5,2, false, false,map); - map.addCase(case1); - map.addCase(case2); - map.addCase(case3); - map.addCase(case4); - Avatar avatar1 = new Avatar(1, "/image/personnage/Person1.2.png"); - avatar1.setCoord(map.getCoordStartX(), map.getCoordStartY()); - //fin map - - - - - - //fin map - } - /* + @Override public void stop(){ System.out.println("Stopping"); song.stop(); } - */ - public static Database getDatabase() { @@ -85,7 +63,7 @@ public class Main extends Application { try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("database.txt"))) { out.writeObject(currentd); } finally { - //System.out.println("Saved!"); + System.out.println("Saved!"); System.exit(0); } } @@ -100,5 +78,9 @@ public class Main extends Application { currentd = new Database(); } } + + public static void main(String[] args) { + launch(args); + } } diff --git a/code/src/model/DataTable.java b/code/src/model/DataTable.java index c46f41d..d608263 100644 --- a/code/src/model/DataTable.java +++ b/code/src/model/DataTable.java @@ -6,33 +6,74 @@ import java.io.IOException; import java.io.Serializable; public class DataTable implements Serializable { - private static int id=0; + + private static int id = 0; private int gameId; - private int score; + + private String playerName; + private int Maxscore; private int rounds; + private double timeElapsed; + public DataTable(int levelNumber) { + id++; + this.gameId = id; + } - public DataTable(){ + public DataTable() { id++; - this.gameId=id; + this.gameId = id; + this.Maxscore = 0; + this.timeElapsed = 0; + this.playerName = ""; + this.rounds = 0; //this.score=score; Calcul du score avec la difficulté ! } //Function update + public void update(int score, String name, double time, int rounds) { + this.Maxscore = score; + this.playerName = name; + this.timeElapsed = time; + this.rounds = rounds; + } - public void saveGame(){ + public void saveGame() { Main.getDatabase().getDatabaseFiles().add(this); - try{ + try { Main.serialize(); + } catch (IOException e) { + System.out.println("Cant close stream"); } - catch (IOException e){ - //System.out.println("Cant close stream"); - } } - public String toString() - { - return " Valeur a mettre"; + public double getTimeElapsed() { + System.out.println(this.timeElapsed); + return this.timeElapsed; + } + + public int maxScore() { + System.out.println(this.Maxscore); + return this.Maxscore; + } + + public String playerName() { + System.out.println(this.playerName); + return this.playerName; + } + + public int getRounds(){ + System.out.println(this.rounds); + return this.rounds; + } + + public int getGameID(){ + System.out.println(this.gameId); + return this.gameId; + } + + public String toString() { + return this.playerName + " : " + this.Maxscore; } } \ No newline at end of file diff --git a/code/src/model/Database.java b/code/src/model/Database.java index b6fb485..8e6495e 100644 --- a/code/src/model/Database.java +++ b/code/src/model/Database.java @@ -11,7 +11,7 @@ public class Database implements Serializable { private final ArrayList databaseFiles; public Database() { - this.maxScore = 1; + this.maxScore = 0; databaseFiles = new ArrayList(); } @@ -19,8 +19,8 @@ public class Database implements Serializable { return maxScore; } - public void setMaxScore(int maxLevel) { - if (this.maxScore < maxLevel) this.maxScore = maxLevel; + public void setMaxScore(int maxScore) { + if (this.maxScore < maxScore) this.maxScore = maxScore; } public void addData(DataTable d) { diff --git a/code/src/model/Map.java b/code/src/model/Map.java index 2a8acda..e256464 100644 --- a/code/src/model/Map.java +++ b/code/src/model/Map.java @@ -16,23 +16,18 @@ public class Map { public void addCase(Case c) { this.map.add(c); } - public void removeCase(Case c) { this.map.remove(c); } - public ArrayList getMap() { return this.map; } - public int getSizeTile() { return this.sizeTile; } - public int getSizeMap() { return this.sizeMap; } - public int getCoordStartX(){ for(Case c : this.map){ if(c.isStart == true){ @@ -41,7 +36,6 @@ public class Map { } return 666; //code erreur } - public int getCoordStartY(){ for(Case c : this.map){ if(c.isStart == true){ @@ -50,7 +44,29 @@ public class Map { } return 666; //code erreur } + public Case getNextCase(Case c){ + int i; + int j; + for(i = 0; i < this.map.size(); i++){ + if(c == this.map.get(i)){ + j=i+1; + System.out.println("i : "+i+" j : "+j); + return this.map.get(j); + } + } + return c; + } + public Case getStartCase(){ + for(Case c : this.map){ + if(c.isStart == true){ + return c; + } + } + return null; + } } + + diff --git a/projetjavafx.iml b/projetjavafx.iml new file mode 100644 index 0000000..3f59aa3 --- /dev/null +++ b/projetjavafx.iml @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file