ZartaX0O3 3 years ago
parent 1be8f7ca2a
commit f995e34e89

@ -17,6 +17,16 @@
AnchorPane.topAnchor="0.0">
<Image url="/image/plaine.gif"/>
</ImageView>
<JFXButton onMouseClicked="#exitGame" layoutX="790.0" layoutY="560" prefHeight="30.0" prefWidth="100.0"
style="-fx-background-color: #EB9C0A;"
text="Exit Game" textFill="WHITE">
<font>
<Font name="Segoe UI Black" size="13.0"/>
</font>
<effect>
<Shadow/>
</effect>
</JFXButton>
<Circle layoutX="146.0" layoutY="138.0" opacity="0.42" radius="219.0" stroke="BLACK" strokeType="INSIDE"/>
<ImageView fitHeight="205.0" fitWidth="204.0" layoutX="61.0" layoutY="-26.0" pickOnBounds="true"
preserveRatio="true">

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import com.jfoenix.controls.JFXButton?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.effect.Shadow?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.shape.Line?>
<?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="levelRoot" fx:controller="controller.GamePlayController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/11" xmlns:fx="http://javafx.com/fxml/1" >
<ImageView fx:id="persoImageView" fitHeight="32.0" fitWidth="32.0" layoutX="132.0" layoutY="74.0" pickOnBounds="true"
preserveRatio="true">
<image>
<Image url="image/personnage/Perso1.png"/>
</image>
</ImageView>
</AnchorPane>

@ -11,37 +11,38 @@
<?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?>
<AnchorPane fx:id="FirstAnchor" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/11" xmlns:fx="http://javafx.com/fxml/1" fx:controller="controller.GamePlayController">
<?import javafx.scene.control.Button?>
<AnchorPane fx:id="levelRoot" fx:controller="controller.GamePlayController" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="600.0" prefWidth="900.0" xmlns="http://javafx.com/javafx/11" xmlns:fx="http://javafx.com/fxml/1" >
<children>
<AnchorPane minHeight="300.0" minWidth="300.0" prefHeight="608.0" prefWidth="348.0" layoutX="600.0">
<children>
<Rectangle arcHeight="5.0" arcWidth="5.0" fill="#323436" height="608.0" layoutY="0.0" stroke="BLACK" strokeType="INSIDE" width="312.0" />
<ImageView fitHeight="128.0" fitWidth="93.0" layoutX="29.0" layoutY="33.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../image/personnage/Perso1.2.png" />
</image>
</ImageView>
<Label layoutX="144.0" layoutY="59.0" prefHeight="41.0" prefWidth="124.0" text="Pseudonyme" textFill="WHITE">
<font>
<Font name="Segoe UI Black" size="16.0" />
</font>
</Label>
<Rectangle arcHeight="5.0" arcWidth="5.0" height="331.0" layoutX="50.0" layoutY="166.0" opacity="0.3" stroke="BLACK" strokeDashOffset="10.0" strokeLineCap="ROUND" strokeLineJoin="ROUND" strokeMiterLimit="100.0" strokeType="INSIDE" strokeWidth="5.0" width="201.0" />
<Line endX="100.0" layoutX="139.0" layoutY="222.0" startX="-77.0" stroke="#f2f0f0" />
<Label alignment="CENTER" layoutX="88.0" layoutY="173.0" prefHeight="41.0" prefWidth="124.0" text="Action" textFill="WHITE">
<font>
<Font name="Segoe UI" size="16.0" />
</font>
</Label>
<JFXButton layoutX="95.0" layoutY="530.0" prefHeight="30.0" prefWidth="119.0" ripplerFill="#e1e1e1" style="-fx-background-color: #EB9C0A;" text="Lancer le dé" textAlignment="CENTER" textFill="WHITE">
<font>
<Font name="Segoe UI" size="15.0" />
</font>
<effect>
<Shadow />
</effect>
</JFXButton>
</children>
</AnchorPane>
<AnchorPane minHeight="300.0" minWidth="300.0" prefHeight="608.0" prefWidth="348.0" layoutX="600.0">
<children>
<Rectangle arcHeight="5.0" arcWidth="5.0" fill="#323436" height="608.0" layoutY="0.0" stroke="BLACK" strokeType="INSIDE" width="312.0" />
<ImageView fitHeight="128.0" fitWidth="93.0" layoutX="29.0" layoutY="33.0" pickOnBounds="true" preserveRatio="true">
<image>
<Image url="@../image/personnage/Perso1.2.png" />
</image>
</ImageView>
<Label layoutX="144.0" layoutY="59.0" prefHeight="41.0" prefWidth="124.0" text="Pseudonyme" textFill="WHITE">
<font>
<Font name="Segoe UI Black" size="16.0" />
</font>
</Label>
<Rectangle arcHeight="5.0" arcWidth="5.0" height="331.0" layoutX="50.0" layoutY="166.0" opacity="0.3" stroke="BLACK" strokeDashOffset="10.0" strokeLineCap="ROUND" strokeLineJoin="ROUND" strokeMiterLimit="100.0" strokeType="INSIDE" strokeWidth="5.0" width="201.0" />
<Line endX="100.0" layoutX="139.0" layoutY="222.0" startX="-77.0" stroke="#f2f0f0" />
<Label alignment="CENTER" layoutX="88.0" layoutY="173.0" prefHeight="41.0" prefWidth="124.0" text="Action" textFill="WHITE">
<font>
<Font name="Segoe UI" size="16.0" />
</font>
</Label>
<JFXButton fx:id="buttonDe" onAction="#lancerDe" layoutX="95.0" layoutY="530.0" prefHeight="30.0" prefWidth="119.0" ripplerFill="#e1e1e1" style="-fx-background-color: #EB9C0A;" text="Lancer le dé" textAlignment="CENTER" textFill="WHITE">
<font>
<Font name="Segoe UI" size="15.0" />
</font>
<effect>
<Shadow />
</effect>
</JFXButton>
</children>
</AnchorPane>
</children>
</AnchorPane>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 970 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1012 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

@ -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);
}

@ -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;
}

@ -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);
}
}

@ -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();
}
}

@ -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");
}
}

@ -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();
}
}

@ -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);
}
}

@ -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;
}
}

@ -11,7 +11,7 @@ public class Database implements Serializable {
private final ArrayList<DataTable> databaseFiles;
public Database() {
this.maxScore = 1;
this.maxScore = 0;
databaseFiles = new ArrayList<DataTable>();
}
@ -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) {

@ -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<Case> 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;
}
}

@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<module type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" inherit-compiler-output="true">
<exclude-output />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/code/ressources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/code/src" isTestSource="false" />
</content>
<orderEntry type="jdk" jdkName="11" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="file://$PATH_TO_JFX_11$" />
</CLASSES>
<JAVADOC />
<SOURCES>
<root url="file://$PATH_TO_JFX_11$" />
</SOURCES>
<jarDirectory url="file://$PATH_TO_JFX_11$" recursive="false" />
<jarDirectory url="file://$PATH_TO_JFX_11$" recursive="false" type="SOURCES" />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$USER_HOME$/Downloads/jfoenix-9.0.10.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$USER_HOME$/Downloads/libtiled-1.2.3.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
<orderEntry type="library" name="libtiled-1.2.3" level="project" />
<orderEntry type="module-library">
<library>
<CLASSES>
<root url="jar://$USER_HOME$/Desktop/javax.xml.bind.jar!/" />
</CLASSES>
<JAVADOC />
<SOURCES />
</library>
</orderEntry>
</component>
</module>
Loading…
Cancel
Save