diff --git a/src/ihm/controller/GestionnaireDePions.java b/src/ihm/controller/GestionnaireDePions.java
index 6d954c6..e624358 100644
--- a/src/ihm/controller/GestionnaireDePions.java
+++ b/src/ihm/controller/GestionnaireDePions.java
@@ -1,9 +1,12 @@
package ihm.controller;
+import carte.CarteLieu;
import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane;
+import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
+import main.Joueur;
public class GestionnaireDePions {
@@ -11,10 +14,12 @@ public class GestionnaireDePions {
private Pion pionLieu;
private GridPane gridPaneVie;
+ private GridPane gridPaneLieux;
- public GestionnaireDePions(Color color,GridPane gridPaneVie) {
+ public GestionnaireDePions(Color color,GridPane gridPaneVie,GridPane gridPaneLieux) {
this.gridPaneVie = gridPaneVie;
+ this.gridPaneLieux = gridPaneLieux;
this.pionVie = new Pion(color);
this.pionLieu = new Pion(color);
}
@@ -33,7 +38,28 @@ public class GestionnaireDePions {
fpNew.getChildren().add(pionVie);
}
- public void deplacerPionLieux() {
+ public void deplacerPionLieux(Joueur j) {
+
+ CarteLieu cl = j.getCarteLieu();
+ int indexCL = j.getPlateau().getLieux().indexOf(cl);
+ HBox hbox;
+ System.out.println("GridPaneLieux "+this.gridPaneLieux);
+ if(indexCL < 2) {
+ hbox = (HBox) this.gridPaneLieux.getChildren().get(0);
+
+ }else if(indexCL < 4) {
+ hbox = (HBox) this.gridPaneLieux.getChildren().get(1);
+
+ }else {
+ hbox = (HBox) this.gridPaneLieux.getChildren().get(2);
+
+ }
+
+ StackPane sp = (StackPane) hbox.getChildren().get(indexCL%2);
+ FlowPane fp = (FlowPane) sp.getChildren().get(0);
+ fp.getChildren().add(this.pionLieu);
}
+
+
}
diff --git a/src/ihm/controller/JoueurIHM.java b/src/ihm/controller/JoueurIHM.java
index 656414f..96de409 100644
--- a/src/ihm/controller/JoueurIHM.java
+++ b/src/ihm/controller/JoueurIHM.java
@@ -22,13 +22,13 @@ public class JoueurIHM {
private GestionnaireDePions gestionnaireDePions;
private Color color;
- public JoueurIHM(int i, Joueur joueur, Pane zoneJoueur, Color color, GridPane gridPaneVie) {
+ public JoueurIHM(int i, Joueur joueur, Pane zoneJoueur, Color color, GridPane gridPaneVie, GridPane gridPaneLieux) {
this.setPosition(i);
this.setJoueur(joueur);
this.zoneJoueur = zoneJoueur;
this.color = color;
- this.gestionnaireDePions = new GestionnaireDePions(this.color,gridPaneVie);
+ this.gestionnaireDePions = new GestionnaireDePions(this.color,gridPaneVie, gridPaneLieux);
zoneJoueur.setBorder(new Border(new BorderStroke(color, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, new BorderWidths(5))));
@@ -115,6 +115,10 @@ public class JoueurIHM {
public void deplacerPionVie(int damage) {
this.gestionnaireDePions.deplacerPionVie(damage);
}
+
+ public void replacerPionLieu() {
+ this.gestionnaireDePions.deplacerPionLieux(this.joueur);
+ }
public void choisir() {
diff --git a/src/ihm/controller/PlateauController.java b/src/ihm/controller/PlateauController.java
index 1e879c4..b5f340f 100644
--- a/src/ihm/controller/PlateauController.java
+++ b/src/ihm/controller/PlateauController.java
@@ -34,7 +34,7 @@ public class PlateauController implements Initializable {
@FXML private AnchorPane rootPane;
@FXML private GridPane gridPaneVie;
- //@FXML static public GridPane gridPaneLieux;
+ @FXML public GridPane gridPaneLieux;
private ChoisirBoolean cb;
@@ -62,7 +62,7 @@ public class PlateauController implements Initializable {
for(int i : map.keySet()) {
System.out.println(i);
- joueursIHM.add(new JoueurIHM(i,map.get(i),getPaneJoueur(i),new Color(Math.random(), Math.random(), Math.random(),1),gridPaneVie));
+ joueursIHM.add(new JoueurIHM(i,map.get(i),getPaneJoueur(i),new Color(Math.random(), Math.random(), Math.random(),1),gridPaneVie, gridPaneLieux));
}
for(int i = 0; i
-
+
diff --git a/src/main/GestionnaireJeu.java b/src/main/GestionnaireJeu.java
index 8616232..577480c 100644
--- a/src/main/GestionnaireJeu.java
+++ b/src/main/GestionnaireJeu.java
@@ -63,8 +63,14 @@ public class GestionnaireJeu {
return joueurs.get(0);
}
+ public void deplacer(Joueur currentJoueur) {
+
+ Platform.runLater(() -> {
+ pc.deplacer(currentJoueur);
+ });
+ }
+
public boolean choisir(Joueur joueur) {
-
Platform.runLater(() -> {
try {
@@ -90,14 +96,10 @@ public class GestionnaireJeu {
try {
return query.get().booleanValue();
} catch (InterruptedException | ExecutionException e) {
- // TODO Auto-generated catch block
+
e.printStackTrace();
}
- Platform.runLater(() -> {
-
- });
-
return false;
}
@@ -155,5 +157,12 @@ public class GestionnaireJeu {
}
+ public void updateVieJoueur(Joueur joueur, int damage) {
+ pc.updateVieJoueur(joueur, damage);
+
+ }
+
+
+
}
diff --git a/src/main/Joueur.java b/src/main/Joueur.java
index e4b0391..319ea72 100644
--- a/src/main/Joueur.java
+++ b/src/main/Joueur.java
@@ -65,11 +65,31 @@ public class Joueur {
}
public void setStat(String key, int valeur) {
-
- // TODO Il faut créer des observers de mort
this.stats.put(key, valeur);
+ updateVictoirePlateau();
+ updateVie();
}
+ private void updateVie() {
+ int damage = damageTaken();
+ this.plateau.updateVieJoueur(this, damage);
+
+ }
+
+ public int damageTaken() {
+ return this.cartePersonnage.getPv() - this.getStat(PLAYER_HP);
+ }
+
+ private void updateVictoirePlateau() {
+
+ int result = victoire() ? 0 : 1;
+ this.plateau.setStat(Plateau.PARTIE_FINIE, result);
+ }
+
+ public boolean victoire() {
+ return this.cartePersonnage.victoire();
+ }
+
public int getStat(String key) {
if(stats.containsKey(key)) {
@@ -80,7 +100,6 @@ public class Joueur {
}
}
-
public List getJoueursAdjacents() {
List joueurs = this.carteLieu.getJoueursAdjacents();
@@ -98,7 +117,6 @@ public class Joueur {
this.gestionnaireEquipements.ajouter(equipement); }
public Equipement choisir(List equipements) {
- // TODO Auto-generated method stub
return null;
}
diff --git a/src/main/Plateau.java b/src/main/Plateau.java
index 61f7080..b57b9d7 100644
--- a/src/main/Plateau.java
+++ b/src/main/Plateau.java
@@ -124,7 +124,6 @@ public class Plateau extends Thread{
public void initCartePersonnage(List cps) throws Exception {
-
int nbJoueurs = this.joueurs.size();
List lcp = new ArrayList<>(nbJoueurs);
@@ -202,6 +201,7 @@ public class Plateau extends Thread{
System.out.println("Au tour de "+currentJoueur.getNom());
System.out.println("Lancement des dés.");
deplacer(currentJoueur);
+ if(isPartieTerminee()) break;
System.out.println("Vous êtes désormais sur le lieu "+currentJoueur.getCarteLieu().getNom());
System.out.println("Voulez vous activer l'effet du lieu ?");
if(currentJoueur.choisir()) {
@@ -209,6 +209,7 @@ public class Plateau extends Thread{
System.out.println("Vous avez "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv");
currentJoueur.utiliserEffetLieu();
System.out.println("Vous passez a "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv");
+ if(isPartieTerminee()) break;
}
try {
Thread.sleep(2000);
@@ -223,6 +224,7 @@ public class Plateau extends Thread{
if(currentJoueur.hasOpponents()) {
Joueur cible = currentJoueur.choisirAdjacents();
attaquer(currentJoueur,cible);
+ if(isPartieTerminee()) break;
}else {
System.out.println("Il n'y a personne a attaquer.");
}
@@ -237,8 +239,24 @@ public class Plateau extends Thread{
i++;
}
+
+ List gagnants = new ArrayList();
+
+ for(Joueur j : joueurs) {
+ if(j.victoire()) {
+ gagnants.add(j);
+ }
+ }
+
+ // TODO Liste des gagnants
+ // TODO Evaluate every winners
}
+ public boolean isPartieTerminee() {
+ return this.getStat(PARTIE_FINIE) == 1;
+ }
+
+
public void deplacer(Joueur currentJoueur) {
boolean attributed = false;
@@ -255,6 +273,8 @@ public class Plateau extends Thread{
}
}
}
+
+ gj.deplacer(currentJoueur);
}
public void attaquer(Joueur joueur1, Joueur joueur2) {
@@ -279,7 +299,6 @@ public class Plateau extends Thread{
int roll4 =rollRandom(4);
int roll6 = rollRandom(6);
-
gj.rollDice(j, PlateauController.DICE_BOTH, roll4,roll6);
return Math.abs(roll4-roll6);
}
@@ -325,8 +344,7 @@ public class Plateau extends Thread{
}else {
return -1;
- }
-
+ }
}
public void shuffleLieux(){
@@ -352,6 +370,11 @@ public class Plateau extends Thread{
this.lieux = lieux;
shuffleLieux();
}
+
+ public List getLieux() {
+ return this.lieux;
+ }
+
public boolean choisir(Joueur joueur) {
return gj.choisir(joueur);
@@ -377,4 +400,10 @@ public class Plateau extends Thread{
List joueurs = this.getJoueurs();
return gj.choisirParmisTous(joueur,joueurs);
}
+
+
+ public void updateVieJoueur(Joueur joueur, int damage) {
+ gj.updateVieJoueur(joueur,damage);
+
+ }
}