From 58bd9e5c7e3a48c486d7ef03272caaea6a3f5003 Mon Sep 17 00:00:00 2001
From: HydroFlo <HydroGamer@outlook.fr>
Date: Wed, 10 Jan 2024 13:09:42 +0100
Subject: [PATCH] correction

---
 S1.02/Jeu/src/Joueur.java     |  1 +
 S1.02/Jeu/src/Labyrinthe.java | 35 ++++++++++++++++++++++++++---------
 2 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/S1.02/Jeu/src/Joueur.java b/S1.02/Jeu/src/Joueur.java
index 79b2eec..b8c545a 100644
--- a/S1.02/Jeu/src/Joueur.java
+++ b/S1.02/Jeu/src/Joueur.java
@@ -3,4 +3,5 @@ class Joueur{
     int vie = 100;
     int score;
     boolean bossVaincu = false;
+    boolean aJouee = false;
 }
\ No newline at end of file
diff --git a/S1.02/Jeu/src/Labyrinthe.java b/S1.02/Jeu/src/Labyrinthe.java
index 5383b79..ea14e47 100644
--- a/S1.02/Jeu/src/Labyrinthe.java
+++ b/S1.02/Jeu/src/Labyrinthe.java
@@ -248,7 +248,7 @@ class Labyrinthe extends Program{
         return new int[]{positionL, positionC};
     }
 
-    int[] deplacement(char[][] Lab, char direction, int positionL, int positionC, Joueur j, Question[] liste, Question[] listeBoss, int[] indiceSalle){ //vérifie si déplacement possible, si oui l'effectue
+    int[] deplacement(char[][] Lab, char direction, int positionL, int positionC, Joueur j, Question[] liste, Question[] listeBoss, int[] indiceSalle, boolean aJouee){ //vérifie si déplacement possible, si oui l'effectue
         if(direction == 'h'){
             afficheHelp();
         }
@@ -258,23 +258,27 @@ class Labyrinthe extends Program{
                 Lab[positionL][positionC] = '.';
                 Lab[positionL-1][positionC] = 'P';
                 return new int[]{positionL-1, positionC};
-            } else if(Lab[positionL-1][positionC] == 'M'){ //Si Monstre, affiche la question.
+            } else if(Lab[positionL-1][positionC] == 'M' && !j.aJouee){ //Si Monstre, affiche la question.
                 Question q = questionRandom(liste, j.score);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
                     Lab[positionL-1][positionC] = '.';
                     j.score += 1;
+                    j.aJouee = true;
                 } else {
                     j.vie -= 10;
+                    j.aJouee = true;
                 }
-            }  else if(Lab[positionL-1][positionC] == 'B' && !j.bossVaincu){ //Si Monstre, affiche la question.
+            }  else if(Lab[positionL-1][positionC] == 'B' && !j.aJouee){ //Si Monstre, affiche la question.
                 Question q = questionRandom(listeBoss, 0);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
                     j.bossVaincu = true;
                     j.score += 30;
+                    j.aJouee = true;
                 } else {
                     j.vie -= 10;
+                    j.aJouee = true;
                 }
             } else if(Lab[positionL-1][positionC] == 'S'){
                 Lab[positionL][positionC] = '.';
@@ -287,23 +291,27 @@ class Labyrinthe extends Program{
                 Lab[positionL][positionC] = '.';
                 Lab[positionL+1][positionC] = 'P';
                 return new int[]{positionL+1, positionC};
-            } else if (Lab[positionL+1][positionC] == 'M'){
+            } else if (Lab[positionL+1][positionC] == 'M' && !j.aJouee){
                 Question q = questionRandom(liste, j.score);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
                     Lab[positionL+1][positionC] = '.';
                     j.score += 1;
+                    j.aJouee = true;
                 } else {
                     j.vie -= 10;
+                    j.aJouee = true;
                 }
-            }  else if(Lab[positionL+1][positionC] == 'B' && !j.bossVaincu){ //Si Monstre, affiche la question.
+            }  else if(Lab[positionL+1][positionC] == 'B'  && !j.aJouee){ //Si Monstre, affiche la question.
                 Question q = questionRandom(listeBoss, 0);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
                     j.bossVaincu = true;
                     j.score += 30;
+                    j.aJouee = true;
                 } else {
                     j.vie -= 10;
+                    j.aJouee = true;
                 }
             } else if (Lab[positionL+1][positionC] == 'S'){
                 Lab[positionL][positionC] = '.';
@@ -316,23 +324,27 @@ class Labyrinthe extends Program{
                 Lab[positionL][positionC] = '.';
                 Lab[positionL][positionC-1] = 'P';
                 return new int[]{positionL, positionC-1};
-            } else if (Lab[positionL][positionC-1] == 'M'){
+            } else if (Lab[positionL][positionC-1] == 'M' && !j.aJouee){
                 Question q = questionRandom(liste, j.score);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
                     Lab[positionL][positionC-1] = '.';
                     j.score += 1;
+                    j.aJouee = true;
                 } else {
                     j.vie -= 10;
+                    j.aJouee = true;
                 }
-            }  else if(Lab[positionL][positionC-1] == 'B' && !j.bossVaincu){ //Si Monstre, affiche la question.
+            }  else if(Lab[positionL][positionC-1] == 'B'  && !j.aJouee){ //Si Monstre, affiche la question.
                 Question q = questionRandom(listeBoss, 0);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
                     j.bossVaincu = true;
                     j.score += 30;
+                    j.aJouee = true;
                 } else {
                     j.vie -= 10;
+                    j.aJouee = true;
                 }
             }  else if (Lab[positionL][positionC-1] == 'S'){
                 Lab[positionL][positionC] = '.';
@@ -345,22 +357,26 @@ class Labyrinthe extends Program{
                 Lab[positionL][positionC] = '.';
                 Lab[positionL][positionC+1] = 'P';
                 return new int[]{positionL, positionC+1};
-            } else if (Lab[positionL][positionC+1] == 'M'){
+            } else if (Lab[positionL][positionC+1] == 'M' && !j.aJouee){
                 Question q = questionRandom(liste, j.score);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
                     Lab[positionL][positionC+1] = '.';
                     j.score += 1;
+                    j.aJouee = true;
                 } else {
+                    j.aJouee = true;
                     j.vie -= 10;
                 }
-            }  else if(Lab[positionL][positionC+1] == 'B' && !j.bossVaincu){ //Si Monstre, affiche la question.
+            }  else if(Lab[positionL][positionC+1] == 'B' && !j.aJouee){ //Si Monstre, affiche la question.
                 Question q = questionRandom(listeBoss, 0);
                 afficheQuestion(q, true);
                 if(questionCorrect(q)){ //En cas de bonne réponse efface le monstre
+                    j.aJouee = true;
                     j.bossVaincu = true;
                     j.score += 30;
                 } else {
+                    j.aJouee = true;
                     j.vie -= 10;
                 }
             }  else if (Lab[positionL][positionC+1] == 'S'){
@@ -693,6 +709,7 @@ class Labyrinthe extends Program{
             for(int i = 0; i < nbMove; i ++){
                 indiceP = deplacement(salle, charAt(choix,0), indiceP[0], indiceP[1], joueur, lQuestion, lQuestionBoss, indiceSalle);
             }
+            joueur.aJouee = false;
             if(!equals(indiceSalleActu, indiceSalle)){
                 salle = genererSalle("ressources/Lab/Salle"+lab[indiceSalle[0]][indiceSalle[1]].numero);
                 salle[indiceP[0]][indiceP[1]] = 'P';
-- 
GitLab