Ajout fin du jeu

main
ZIRTR0X 3 years ago
parent 9aabe3a3a3
commit 911793b2fc

@ -11,9 +11,11 @@ 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.util.Duration;
import model.Case;
import model.GameLoop;
import model.GameTime;
import model.Map;
import java.io.IOException;
@ -39,6 +41,10 @@ public class GamePlayController implements Initializable {
String pathPerso;
int i, diceNumber;
Thread personnage;
boolean finJeu = false;
GameTime gameTime;
GameLoop loop;
Text textEnd;
public int difficulty;
public int perso;
@ -52,10 +58,37 @@ public class GamePlayController implements Initializable {
levelRoot.getChildren().addAll(mapController.mapInitialisation(this.difficulty), persoController.playerInitialisation(this.difficulty,this.perso, mapController.getMap()), creatureImageView);
persoController.setActualCase(mapController.getStartCase());
playerImagePerso.setImage(new Image("image/personnage/Perso" + this.perso + ".2.png"));
GameLoop loop = new GameLoop(this.difficulty, mapController.getMap(), creatureImageView);
loop = new GameLoop(this.difficulty, mapController.getMap(), creatureImageView);
loop.start();
Text text = new Text();
text.setText("Time : ");
text.setX(1000);
text.setY(50);
text.setFill(Color.WHITE);
text.setStyle("-fx-font: 20 arial;");
Text textTimer = new Text();
textTimer.setText("");
textTimer.setX(1070);
textTimer.setY(50);
textTimer.setFill(Color.WHITE);
textTimer.setStyle("-fx-font: 20 arial;");
textEnd = new Text();
textEnd.setText("");
textEnd.setX(500);
textEnd.setY(500);
textEnd.setFill(Color.WHITE);
textEnd.setStyle("-fx-font: 100 arial;");
levelRoot.getChildren().addAll(text,textTimer,textEnd);
gameTime = new GameTime(textTimer);
gameTime.start();
}
public void timer(){
if(finJeu){
gameTime.stop();
loop.stop();
}
}
public void movePlayerNextCase() throws InterruptedException {
persoImageView = persoController.persoImageView;
@ -79,163 +112,171 @@ public class GamePlayController implements Initializable {
int time6 = 600;
int time7 = 700;
int time8 = 800;
//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(time1), event -> {
persoImageView.setImage(imagePerso8);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso7);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso9);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso7);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso9);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso7);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
persoImageView.setImage(imagePerso9);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
persoImageView.setImage(imagePerso8);
persoImageView.setLayoutX(persoImageView.getLayoutX()+avancementCase);
}));
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(time1), event -> {
persoImageView.setImage(imagePerso5);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso4);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso6);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso4);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso6);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso4);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
persoImageView.setImage(imagePerso6);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
persoImageView.setImage(imagePerso5);
persoImageView.setLayoutX(persoImageView.getLayoutX()-avancementCase);
}));
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(time1), event -> {
persoImageView.setImage(imagePerso11);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso10);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso12);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso10);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso12);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso10);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
persoImageView.setImage(imagePerso12);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
persoImageView.setImage(imagePerso11);
persoImageView.setLayoutY(persoImageView.getLayoutY()-avancementCase);
}));
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(time1), event -> {
persoImageView.setImage(imagePerso2);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso1);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso3);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso1);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso3);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso1);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> {
persoImageView.setImage(imagePerso3);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> {
persoImageView.setImage(imagePerso2);
persoImageView.setLayoutY(persoImageView.getLayoutY()+avancementCase);
}));
timeline.play();
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());
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time1), event -> {
persoImageView.setImage(imagePerso8);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso7);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso9);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso7);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso9);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso7);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
persoImageView.setImage(imagePerso9);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
persoImageView.setImage(imagePerso8);
persoImageView.setLayoutX(persoImageView.getLayoutX() + avancementCase);
}));
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(time1), event -> {
persoImageView.setImage(imagePerso5);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso4);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso6);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso4);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso6);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso4);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
persoImageView.setImage(imagePerso6);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
persoImageView.setImage(imagePerso5);
persoImageView.setLayoutX(persoImageView.getLayoutX() - avancementCase);
}));
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(time1), event -> {
persoImageView.setImage(imagePerso11);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso10);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso12);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso10);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso12);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso10);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time7), event -> {
persoImageView.setImage(imagePerso12);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time8), event -> {
persoImageView.setImage(imagePerso11);
persoImageView.setLayoutY(persoImageView.getLayoutY() - avancementCase);
}));
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(time1), event -> {
persoImageView.setImage(imagePerso2);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time2), event -> {
persoImageView.setImage(imagePerso1);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time3), event -> {
persoImageView.setImage(imagePerso3);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time4), event -> {
persoImageView.setImage(imagePerso1);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time5), event -> {
persoImageView.setImage(imagePerso3);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(time6), event -> {
persoImageView.setImage(imagePerso1);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(800), event -> {
persoImageView.setImage(imagePerso3);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.getKeyFrames().add(new KeyFrame(Duration.millis(900), event -> {
persoImageView.setImage(imagePerso2);
persoImageView.setLayoutY(persoImageView.getLayoutY() + avancementCase);
}));
timeline.play();
}
if(caseActuelle.isEnd() == true){
textEnd.setText("Fin");
}
}else{
System.out.println("Fin du jeu");
finJeu = true;
timer();
}
}

@ -37,6 +37,7 @@ public class MapController implements Initializable {
private final Image x = new Image("/image/terrain/multiarbre1.png");
private final Image y = new Image("/image/terrain/multiarbre2.png");
private final Image z = new Image("/image/terrain/star.png");
private Case case1;
@Override
@ -47,12 +48,17 @@ public class MapController implements Initializable {
public void createMap(int difficulty) {
int[][] coordFirstDifficultyMap = {{0,24},{1,24},{2,24},{3,24},{4,24},{5,24},{5,23},{5,22},{5,21},{5,20},{5,19},{5,18},{6,18},{7,18},{8,18},{9,18},{10,18},{11,18},{12,18},{12,17},{12,16},{12,15},{12,14},{12,13},{12,12},{11,12},{10,12},{9,12},{8,12},{7,12},{6,12},{5,12},{4,12},{3,12},{3,11},{3,10},{3,9},{3,8},{3,7},{3,6},{3,5},{3,4},{3,3},{4,3},{5,3},{6,3},{7,3},{8,3},{9,3},{10,3},{11,3},{12,3},{13,3},{14,3},{15,3},{16,3},{17,3},{18,3},{19,3},{19,4},{19,5},{19,6},{19,7},{19,8},{19,9},{19,10},{20,10},{21,10},{22,10},{23,10},{24,10},{24,11},{24,12},{24,13},{24,14},{24,15},{24,16},{24,17},{24,18},{24,19},{24,20},{24,21},{24,22},{24,23},{24,24},{25,24},{26,24},{27,24},{28,24},{29,24}};
//int[][] coordFirstDifficultyMap = {{0,24},{1,24},{2,24},{3,24},{4,24},{5,24},{5,23},{5,22},{5,21},{5,20}};
if (difficulty == 1) {
int j = 1;
for(int[] i : coordFirstDifficultyMap){
boolean bool = j == 1;
System.out.println("Taille case :" +coordFirstDifficultyMap.length);
Case case1 = new Case(j, i[0], i [1], bool, false, map);
if(j == coordFirstDifficultyMap.length){
case1 = new Case(j, i[0], i [1], bool, true, map);
}else{
case1 = new Case(j, i[0], i [1], bool, false, map);
}
map.addCase(case1);
j++;
}

@ -57,4 +57,10 @@ public class GameLoop {
};
timer.start();
}
public void stop() {
System.out.println("GameLoop.stop()");
timer.stop();
timer.interrupt();
}
}

@ -0,0 +1,41 @@
package model;
import controller.CreatureController;
import javafx.fxml.FXML;
import javafx.scene.image.ImageView;
import javafx.scene.text.Text;
public class GameTime {
private Thread timer;
private Text textTimer;
public GameTime(Text textTimer) {
this.textTimer = textTimer;
}
public void start() {
System.out.println("GameTime.start()");
timer = new Thread("timer") {
public void run() {
int time = 0;
while (true) {
textTimer.setText(String.valueOf(time));
time++;
try {
timer.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
timer.start();
}
public void stop() {
System.out.println("GameTime.stop()");
timer.stop();
}
}

@ -56,7 +56,12 @@ public class Map {
if(c == this.map.get(i)){
j=i+1;
System.out.println("i : "+i+" j : "+j);
return this.map.get(j);
try {
return this.map.get(j);
}catch (IndexOutOfBoundsException e){
return null;
}
}
}
return c;

Loading…
Cancel
Save