From 061d73a8a9e6cdf65815f49d1aaa82a6a0069f1c Mon Sep 17 00:00:00 2001 From: ZartaX0O3 Date: Thu, 20 Jan 2022 21:12:13 +0100 Subject: [PATCH] Fonction bonus et malus ! --- code/ressources/fxml/sample.fxml | 4 +- code/src/controller/CreatureController.java | 2 +- code/src/controller/GamePlayController.java | 124 ++++++++++++++------ code/src/controller/MapController.java | 1 - code/src/controller/PersoController.java | 5 +- code/src/launcher/Main.java | 31 +---- code/src/model/Bonus.java | 2 +- code/src/model/DataTable.java | 67 ----------- code/src/model/Database.java | 41 ------- code/src/model/GameLoop.java | 5 +- code/src/model/Malus.java | 2 +- code/src/model/Map.java | 2 +- code/src/model/MapCreature.java | 1 - resultats.txt | 2 + 14 files changed, 104 insertions(+), 185 deletions(-) delete mode 100644 code/src/model/DataTable.java delete mode 100644 code/src/model/Database.java create mode 100644 resultats.txt diff --git a/code/ressources/fxml/sample.fxml b/code/ressources/fxml/sample.fxml index ef104af..0df455c 100644 --- a/code/ressources/fxml/sample.fxml +++ b/code/ressources/fxml/sample.fxml @@ -16,13 +16,13 @@ - + diff --git a/code/src/controller/CreatureController.java b/code/src/controller/CreatureController.java index d9d63aa..885b585 100644 --- a/code/src/controller/CreatureController.java +++ b/code/src/controller/CreatureController.java @@ -21,7 +21,7 @@ public class CreatureController { private Creature creature; @FXML public ImageView creatureImageView; @FXML public AnchorPane levelRoot; - private Map map; + private final Map map; private MapCreatureController mapCreatureController; private Case caseCreatureStart; private Thread Creature; diff --git a/code/src/controller/GamePlayController.java b/code/src/controller/GamePlayController.java index 030bd2b..b8c552a 100644 --- a/code/src/controller/GamePlayController.java +++ b/code/src/controller/GamePlayController.java @@ -3,23 +3,28 @@ package controller; import com.jfoenix.controls.JFXButton; import javafx.animation.KeyFrame; import javafx.animation.Timeline; +import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Scene; import javafx.scene.image.Image; import javafx.scene.image.ImageView; +import javafx.scene.image.WritableImage; import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.GridPane; import javafx.scene.paint.Color; import javafx.scene.text.Text; import javafx.stage.Stage; import javafx.util.Duration; +import model.*; import model.Case; import model.GameLoop; import model.GameTime; import model.Map; import model.ResultatTxt; +import java.awt.*; import java.io.IOException; import java.net.URL; import java.util.ArrayList; @@ -49,6 +54,8 @@ public class GamePlayController implements Initializable { private Text resultat4; private Text resultat5; private int nbTour = 0; + private int numCase = 0; + int l; public int difficulty; public int perso; @@ -119,7 +126,7 @@ public class GamePlayController implements Initializable { resultat5.setFill(Color.WHITE); resultat5.setStyle("-fx-font: 20 arial; "); button = new JFXButton(""); - levelRoot.getChildren().addAll(text,textTimer,textEnd,button, resultat1, resultat2, resultat3, resultat4, resultat5); + levelRoot.getChildren().addAll(text,textTimer,textEnd,button,resultat1,resultat2,resultat3,resultat4); gameTime = new GameTime(textTimer); gameTime.start(); PersoMouv = false; @@ -155,7 +162,6 @@ public class GamePlayController implements Initializable { if(caseActuelle != null){ //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()); @@ -195,9 +201,9 @@ public class GamePlayController implements Initializable { } //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()); + Image imagePerso4 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "4.png")).toExternalForm()); + Image imagePerso5 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "5.png")).toExternalForm()); + Image imagePerso6 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "6.png")).toExternalForm()); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> { persoImageView.setImage(imagePerso5); persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase); @@ -234,9 +240,9 @@ public class GamePlayController implements Initializable { } //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()); + Image imagePerso10 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "10.png")).toExternalForm()); + Image imagePerso11 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "11.png")).toExternalForm()); + Image imagePerso12 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "12.png")).toExternalForm()); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> { persoImageView.setImage(imagePerso11); persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase); @@ -273,9 +279,9 @@ public class GamePlayController implements Initializable { } //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()); + Image imagePerso1 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "1.png")).toExternalForm()); + Image imagePerso2 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "2.png")).toExternalForm()); + Image imagePerso3 = new Image(Objects.requireNonNull(getClass().getClassLoader().getResource(pathPerso + "3.png")).toExternalForm()); timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> { persoImageView.setImage(imagePerso2); persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase); @@ -330,10 +336,10 @@ public class GamePlayController implements Initializable { button.setLayoutY(752); button.setPrefHeight(30); button.setPrefWidth(119); + button.setText("Retour au début"); button.setOnAction(event -> { - AnchorPane pane = null; try { - pane = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MainPage.fxml"))); + AnchorPane pane = FXMLLoader.load(Objects.requireNonNull(getClass().getResource("/fxml/MainPage.fxml"))); Stage a = new Stage(); a.setTitle("The Adventurer"); a.setScene(new Scene(pane, 900, 600)); @@ -341,40 +347,25 @@ public class GamePlayController implements Initializable { a.show(); Stage stage = (Stage) levelRoot.getScene().getWindow(); stage.close(); - + levelRoot.getChildren().setAll(pane); } catch (IOException e) { e.printStackTrace(); } - levelRoot.getChildren().setAll(pane); } ); } public void lancerDe() { - //Case actual = persoController.getActualCase(); - if(PersoMouv == false) { + Case actuel = persoController.getActualCase();; + + if(!PersoMouv) { animationDe(); nbTour++; } - - //verification(actual); } - public void verification(Case actual) { - Map map = mapController.getMap(); - ArrayList array = map.getMap(); - actual = mapController.getCase(actual, diceNumber); - for (Case c : array) { - if (actual.getCoordX() == c.getCoordX() && actual.getCoordY() == c.getCoordY() && c.isBonus()) { - System.out.println("BONUS"); - System.out.println("X perso : " + actual.getCoordX() + " Y perso : " + actual.getCoordY() + " X perso : " + c.getCoordX() + " Y perso : " + c.getCoordY() + " Bonus : " + c.isBonus()); - } - if (actual.getCoordX() == c.getCoordX() && actual.getCoordY() == c.getCoordY() && c.isMalus()) { - System.out.println("MALUS"); - } - } - } + public void animationDe() { personnage = new Thread("personnage") { @@ -389,14 +380,75 @@ public class GamePlayController implements Initializable { String path = "image/dé/d" + diceNumber + ".png"; timeline.getKeyFrames().add(new KeyFrame(Duration.millis(50 * i), event -> de.setImage(new Image(path)))); } + Map map = mapController.getMap(); + Case c = map.getMap().get(numCase+diceNumber); + + if(c.isBonus()){ + Bonus bonus = Bonus.randomGet(); + switch (Objects.requireNonNull(bonus)){ + case MOVE_FORWARD_1: + System.out.println("AJOUT DE 1"); + diceNumber+=1; + break; + + case MOVE_FORWARD_3: + System.out.println("AJOUT DE 3"); + diceNumber+=3; + break; + + case MOVE_FORWARD_5: + System.out.println("AJOUT DE 5"); + diceNumber+=5; + break; + + case MOVE_FORWARD_8: + System.out.println("AJOUT DE 8"); + diceNumber+=8; + break; + } + } + else if(c.isMalus()){ + Malus malus = Malus.randomGet(); + switch (Objects.requireNonNull(malus)){ + case MOVE_BACKWARD_1: + System.out.println("SUPRESSION DE 1"); + diceNumber-=1; + break; + + case MOVE_BACKWARD_3: + System.out.println("SUPRESSION DE 3"); + if(diceNumber > 3){ + diceNumber-=3; + } else { + diceNumber=0; + } + break; + + case MOVE_BACKWARD_5: + System.out.println("SUPRESSION DE 5"); + if(diceNumber > 5){ + diceNumber-=5; + } else { + diceNumber=0; + } + break; + + case LAST_POSITION: + System.out.println("SUPRESSION DE DICE"); + diceNumber=0; + break; + } + } + numCase+=diceNumber; + timeline.play(); try { personnage.sleep(700); - System.out.println("Lancement affichage resulsta"); affichageResultat(); } catch (InterruptedException e) { e.printStackTrace(); } + for (i = 0; i < diceNumber; i++) { try { PersoMouv = true; @@ -406,13 +458,14 @@ public class GamePlayController implements Initializable { e.printStackTrace(); } } + System.out.println(persoController.getActualCase().getCoordX() + " " + persoController.getActualCase().getCoordY()); + System.out.println(numCase); PersoMouv = false; } }; personnage.start(); } public void affichageResultat(){ - System.out.println("affichageResultat()"); String ancienResultat1; String ancienResultat2; String ancienResultat3; @@ -458,6 +511,7 @@ public class GamePlayController implements Initializable { } } } + public void saveScore(){ //difficulty int resultat = gameTime.getTime(); diff --git a/code/src/controller/MapController.java b/code/src/controller/MapController.java index 9bb18da..cb75100 100644 --- a/code/src/controller/MapController.java +++ b/code/src/controller/MapController.java @@ -87,7 +87,6 @@ public class MapController implements Initializable { if(k == 1 || k == 2) bonus = true; else if(k == 3) malus = true; - System.out.println("X : " + i[0] + " Y : " + i[1] + " Start : " + boolStart + " End : " + boolEnd + " Bonus : " + bonus + " Malus : " + malus); Case case1 = new Case(j, i[0], i [1], boolStart, bonus, malus, boolEnd, map); map.addCase(case1); j++; diff --git a/code/src/controller/PersoController.java b/code/src/controller/PersoController.java index 1449e32..da6fb9f 100644 --- a/code/src/controller/PersoController.java +++ b/code/src/controller/PersoController.java @@ -43,7 +43,6 @@ public class PersoController { persoImageView.setId("persoImageView"); persoImageView.setFitWidth(35); persoImageView.setFitHeight(35); - System.out.println("X :" + getX()); persoImageView.setLayoutX(getX()*map.getSizeTile()-5); persoImageView.setLayoutY(getY()*map.getSizeTile()-5); test.getChildren().add(persoImageView); @@ -71,6 +70,10 @@ public class PersoController { return this.actualCase; } + public Case getOldCase() { + return this.oldCase; + } + public void setOldCase(Case old){ this.oldCase = old; } diff --git a/code/src/launcher/Main.java b/code/src/launcher/Main.java index e9a7db7..80c3fa9 100644 --- a/code/src/launcher/Main.java +++ b/code/src/launcher/Main.java @@ -7,20 +7,16 @@ import javafx.scene.Scene; import javafx.stage.Stage; import model.*; -import java.io.*; import java.util.ArrayList; import java.util.Objects; public class Main extends Application { - private static Database currentd; private Album song; @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)); @@ -28,7 +24,7 @@ public class Main extends Application { primaryStage.show(); //début musique - ArrayList musiqueListe = new ArrayList(); + ArrayList musiqueListe = new ArrayList<>(); Musique song1 = new Musique("/musique/medieval_musique1.mp3",211000); Musique song2 = new Musique("/musique/medieval_musique2.mp3",248000); Musique song3 = new Musique("/musique/medieval_musique3.mp3",248000); @@ -49,31 +45,6 @@ public class Main extends Application { } - - public static Database getDatabase() { - return currentd; - } - - public static void serialize() throws IOException { - try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("database.txt"))) { - out.writeObject(currentd); - } finally { - System.out.println("Saved!"); - System.exit(0); - } - } - - public static void deserialize() throws ClassNotFoundException, IOException { - ObjectInputStream in = null; - try { - in = new ObjectInputStream(new FileInputStream("database.txt")); - currentd = (Database) in.readObject(); - in.close(); - } catch (FileNotFoundException | NullPointerException e) { - currentd = new Database(); - } - } - public static void main(String[] args) { launch(args); } diff --git a/code/src/model/Bonus.java b/code/src/model/Bonus.java index 651d934..e60da67 100644 --- a/code/src/model/Bonus.java +++ b/code/src/model/Bonus.java @@ -8,7 +8,7 @@ public enum Bonus { MOVE_FORWARD_8, NEW_DICE; - public Bonus randomGet(){ + public static Bonus randomGet(){ int i = (int) (Math.random() * 8); switch (i) { case 0: diff --git a/code/src/model/DataTable.java b/code/src/model/DataTable.java deleted file mode 100644 index 9369832..0000000 --- a/code/src/model/DataTable.java +++ /dev/null @@ -1,67 +0,0 @@ -package model; - -import launcher.Main; - -import java.io.IOException; -import java.io.Serializable; - -public class DataTable implements Serializable { - - private static int id = 0; - private int gameId; - - private int Maxscore; - private int rounds; - private double timer; - - public DataTable(int levelNumber) { - id++; - this.gameId = id; - } - - public DataTable() { - id++; - this.gameId = id; - this.Maxscore = 0; - this.timer = 0; - 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.timer = time; - this.rounds = rounds; - } - - public void saveGame() { - Main.getDatabase().getDatabaseFiles().add(this); - try { - Main.serialize(); - } catch (IOException e) { - System.out.println("Cant close stream"); - } - } - - public double getTimeElapsed() { - System.out.println(this.timer); - return this.timer; - } - - public int maxScore() { - System.out.println(this.Maxscore); - return this.Maxscore; - } - - public int getRounds(){ - System.out.println(this.rounds); - return this.rounds; - } - - public int getGameID(){ - System.out.println(this.gameId); - return this.gameId; - } -} \ No newline at end of file diff --git a/code/src/model/Database.java b/code/src/model/Database.java deleted file mode 100644 index 8e6495e..0000000 --- a/code/src/model/Database.java +++ /dev/null @@ -1,41 +0,0 @@ -package model; - -import java.io.*; -import java.util.ArrayList; - -public class Database implements Serializable { - - private int maxScore; - private static Database db; - - private final ArrayList databaseFiles; - - public Database() { - this.maxScore = 0; - databaseFiles = new ArrayList(); - } - - public int getMaxScore() { - return maxScore; - } - - public void setMaxScore(int maxScore) { - if (this.maxScore < maxScore) this.maxScore = maxScore; - } - - public void addData(DataTable d) { - databaseFiles.add(d); - } - - public void removeData(DataTable d) { - databaseFiles.remove(d); - } - - public static void resetScore() { - db = new Database(); - } - - public ArrayList getDatabaseFiles() { - return databaseFiles; - } -} \ No newline at end of file diff --git a/code/src/model/GameLoop.java b/code/src/model/GameLoop.java index ba357f3..6c52eb6 100644 --- a/code/src/model/GameLoop.java +++ b/code/src/model/GameLoop.java @@ -20,7 +20,6 @@ public class GameLoop { } public void start() { - System.out.println("GameLoop.start()"); c = new CreatureController(lv,map, creatureImageView); timer = new Thread("timer") { public void run() { @@ -33,7 +32,7 @@ public class GameLoop { } catch (InterruptedException e) { e.printStackTrace(); } - System.out.println("Timer = " + i); + //System.out.println("Timer = " + i); i = nbSeconde; try { timer.sleep(1000); @@ -41,7 +40,7 @@ public class GameLoop { e.printStackTrace(); } }else{ - System.out.println("Timer = " + i); + //System.out.println("Timer = " + i); i--; try { timer.sleep(1000); diff --git a/code/src/model/Malus.java b/code/src/model/Malus.java index c75f75a..cf84c2e 100644 --- a/code/src/model/Malus.java +++ b/code/src/model/Malus.java @@ -7,7 +7,7 @@ public enum Malus { MOVE_BACKWARD_5, // Recule de 5 LAST_POSITION; // Retour a la position initiale - public Malus randomGet(){ + public static Malus randomGet(){ int i = (int) (Math.random() * 8); switch (i) { case 0: diff --git a/code/src/model/Map.java b/code/src/model/Map.java index 84ea3d1..3e776cf 100644 --- a/code/src/model/Map.java +++ b/code/src/model/Map.java @@ -54,7 +54,6 @@ public class Map { for(i = 0; i < this.map.size(); i++){ if(c == this.map.get(i)){ j=i+1; - System.out.println("i : "+i+" j : "+j); try { return this.map.get(j); }catch (IndexOutOfBoundsException e){ @@ -92,6 +91,7 @@ public class Map { } return null; } + } diff --git a/code/src/model/MapCreature.java b/code/src/model/MapCreature.java index 41bee57..f86ec87 100644 --- a/code/src/model/MapCreature.java +++ b/code/src/model/MapCreature.java @@ -54,7 +54,6 @@ public class MapCreature { 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); } } diff --git a/resultats.txt b/resultats.txt new file mode 100644 index 0000000..07b417f --- /dev/null +++ b/resultats.txt @@ -0,0 +1,2 @@ +10 1 20-01-22 +11 1 20-01-22