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