PlateauTest2 déplacement des pions

This commit is contained in:
Paul Gross 2020-05-04 11:14:52 +02:00
parent afaef5411b
commit 80a0c89d49
7 changed files with 119 additions and 21 deletions

View File

@ -1,9 +1,12 @@
package ihm.controller; package ihm.controller;
import carte.CarteLieu;
import javafx.scene.layout.FlowPane; import javafx.scene.layout.FlowPane;
import javafx.scene.layout.GridPane; import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane; import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color; import javafx.scene.paint.Color;
import main.Joueur;
public class GestionnaireDePions { public class GestionnaireDePions {
@ -11,10 +14,12 @@ public class GestionnaireDePions {
private Pion pionLieu; private Pion pionLieu;
private GridPane gridPaneVie; private GridPane gridPaneVie;
private GridPane gridPaneLieux;
public GestionnaireDePions(Color color,GridPane gridPaneVie) { public GestionnaireDePions(Color color,GridPane gridPaneVie,GridPane gridPaneLieux) {
this.gridPaneVie = gridPaneVie; this.gridPaneVie = gridPaneVie;
this.gridPaneLieux = gridPaneLieux;
this.pionVie = new Pion(color); this.pionVie = new Pion(color);
this.pionLieu = new Pion(color); this.pionLieu = new Pion(color);
} }
@ -33,7 +38,28 @@ public class GestionnaireDePions {
fpNew.getChildren().add(pionVie); 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);
}
} }

View File

@ -22,13 +22,13 @@ public class JoueurIHM {
private GestionnaireDePions gestionnaireDePions; private GestionnaireDePions gestionnaireDePions;
private Color color; 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.setPosition(i);
this.setJoueur(joueur); this.setJoueur(joueur);
this.zoneJoueur = zoneJoueur; this.zoneJoueur = zoneJoueur;
this.color = color; 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)))); zoneJoueur.setBorder(new Border(new BorderStroke(color, BorderStrokeStyle.SOLID, CornerRadii.EMPTY, new BorderWidths(5))));
@ -116,6 +116,10 @@ public class JoueurIHM {
this.gestionnaireDePions.deplacerPionVie(damage); this.gestionnaireDePions.deplacerPionVie(damage);
} }
public void replacerPionLieu() {
this.gestionnaireDePions.deplacerPionLieux(this.joueur);
}
public void choisir() { public void choisir() {

View File

@ -34,7 +34,7 @@ public class PlateauController implements Initializable {
@FXML private AnchorPane rootPane; @FXML private AnchorPane rootPane;
@FXML private GridPane gridPaneVie; @FXML private GridPane gridPaneVie;
//@FXML static public GridPane gridPaneLieux; @FXML public GridPane gridPaneLieux;
private ChoisirBoolean cb; private ChoisirBoolean cb;
@ -62,7 +62,7 @@ public class PlateauController implements Initializable {
for(int i : map.keySet()) { for(int i : map.keySet()) {
System.out.println(i); 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<joueursIHM.size(); i++) { for(int i = 0; i<joueursIHM.size(); i++) {
@ -281,4 +281,16 @@ public class PlateauController implements Initializable {
jihm.getZoneJoueur().getChildren().setAll(); jihm.getZoneJoueur().getChildren().setAll();
return result; return result;
} }
public void deplacer(Joueur currentJoueur) {
JoueurIHM jIHM = getJoueurIHM(currentJoueur);
jIHM.replacerPionLieu();
}
public void updateVieJoueur(Joueur joueur, int damage) {
/*JoueurIHM jIHM = getJoueurIHM(joueur);
jIHM.deplacerPionVie(damage);*/
}
} }

View File

@ -276,7 +276,7 @@
<Circle fill="#64ff1f" radius="10.0" stroke="BLACK" strokeType="INSIDE" GridPane.rowIndex="3" /> <Circle fill="#64ff1f" radius="10.0" stroke="BLACK" strokeType="INSIDE" GridPane.rowIndex="3" />
</children> </children>
</GridPane> </GridPane>
<GridPane hgap="20.0" GridPane.columnIndex="1"> <GridPane fx:id="gridPaneLieux" hgap="20.0" GridPane.columnIndex="1">
<columnConstraints> <columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" /> <ColumnConstraints hgrow="SOMETIMES" />
<ColumnConstraints hgrow="SOMETIMES" /> <ColumnConstraints hgrow="SOMETIMES" />

View File

@ -63,8 +63,14 @@ public class GestionnaireJeu {
return joueurs.get(0); return joueurs.get(0);
} }
public boolean choisir(Joueur joueur) { public void deplacer(Joueur currentJoueur) {
Platform.runLater(() -> {
pc.deplacer(currentJoueur);
});
}
public boolean choisir(Joueur joueur) {
Platform.runLater(() -> { Platform.runLater(() -> {
try { try {
@ -90,14 +96,10 @@ public class GestionnaireJeu {
try { try {
return query.get().booleanValue(); return query.get().booleanValue();
} catch (InterruptedException | ExecutionException e) { } catch (InterruptedException | ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();
} }
Platform.runLater(() -> {
});
return false; return false;
} }
@ -155,5 +157,12 @@ public class GestionnaireJeu {
} }
public void updateVieJoueur(Joueur joueur, int damage) {
pc.updateVieJoueur(joueur, damage);
}
} }

View File

@ -65,9 +65,29 @@ public class Joueur {
} }
public void setStat(String key, int valeur) { public void setStat(String key, int valeur) {
// TODO Il faut créer des observers de mort
this.stats.put(key, valeur); 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) { public int getStat(String key) {
@ -80,7 +100,6 @@ public class Joueur {
} }
} }
public List<Joueur> getJoueursAdjacents() { public List<Joueur> getJoueursAdjacents() {
List<Joueur> joueurs = this.carteLieu.getJoueursAdjacents(); List<Joueur> joueurs = this.carteLieu.getJoueursAdjacents();
@ -98,7 +117,6 @@ public class Joueur {
this.gestionnaireEquipements.ajouter(equipement); } this.gestionnaireEquipements.ajouter(equipement); }
public Equipement choisir(List<Equipement> equipements) { public Equipement choisir(List<Equipement> equipements) {
// TODO Auto-generated method stub
return null; return null;
} }

View File

@ -124,7 +124,6 @@ public class Plateau extends Thread{
public void initCartePersonnage(List<CartePersonnage> cps) throws Exception { public void initCartePersonnage(List<CartePersonnage> cps) throws Exception {
int nbJoueurs = this.joueurs.size(); int nbJoueurs = this.joueurs.size();
List<CartePersonnage> lcp = new ArrayList<>(nbJoueurs); List<CartePersonnage> lcp = new ArrayList<>(nbJoueurs);
@ -202,6 +201,7 @@ public class Plateau extends Thread{
System.out.println("Au tour de "+currentJoueur.getNom()); System.out.println("Au tour de "+currentJoueur.getNom());
System.out.println("Lancement des dés."); System.out.println("Lancement des dés.");
deplacer(currentJoueur); deplacer(currentJoueur);
if(isPartieTerminee()) break;
System.out.println("Vous êtes désormais sur le lieu "+currentJoueur.getCarteLieu().getNom()); System.out.println("Vous êtes désormais sur le lieu "+currentJoueur.getCarteLieu().getNom());
System.out.println("Voulez vous activer l'effet du lieu ?"); System.out.println("Voulez vous activer l'effet du lieu ?");
if(currentJoueur.choisir()) { if(currentJoueur.choisir()) {
@ -209,6 +209,7 @@ public class Plateau extends Thread{
System.out.println("Vous avez "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv"); System.out.println("Vous avez "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv");
currentJoueur.utiliserEffetLieu(); currentJoueur.utiliserEffetLieu();
System.out.println("Vous passez a "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv"); System.out.println("Vous passez a "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv");
if(isPartieTerminee()) break;
} }
try { try {
Thread.sleep(2000); Thread.sleep(2000);
@ -223,6 +224,7 @@ public class Plateau extends Thread{
if(currentJoueur.hasOpponents()) { if(currentJoueur.hasOpponents()) {
Joueur cible = currentJoueur.choisirAdjacents(); Joueur cible = currentJoueur.choisirAdjacents();
attaquer(currentJoueur,cible); attaquer(currentJoueur,cible);
if(isPartieTerminee()) break;
}else { }else {
System.out.println("Il n'y a personne a attaquer."); System.out.println("Il n'y a personne a attaquer.");
} }
@ -237,7 +239,23 @@ public class Plateau extends Thread{
i++; i++;
} }
List<Joueur> gagnants = new ArrayList<Joueur>();
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) { public void deplacer(Joueur currentJoueur) {
@ -255,6 +273,8 @@ public class Plateau extends Thread{
} }
} }
} }
gj.deplacer(currentJoueur);
} }
public void attaquer(Joueur joueur1, Joueur joueur2) { public void attaquer(Joueur joueur1, Joueur joueur2) {
@ -279,7 +299,6 @@ public class Plateau extends Thread{
int roll4 =rollRandom(4); int roll4 =rollRandom(4);
int roll6 = rollRandom(6); int roll6 = rollRandom(6);
gj.rollDice(j, PlateauController.DICE_BOTH, roll4,roll6); gj.rollDice(j, PlateauController.DICE_BOTH, roll4,roll6);
return Math.abs(roll4-roll6); return Math.abs(roll4-roll6);
} }
@ -326,7 +345,6 @@ public class Plateau extends Thread{
return -1; return -1;
} }
} }
public void shuffleLieux(){ public void shuffleLieux(){
@ -353,6 +371,11 @@ public class Plateau extends Thread{
shuffleLieux(); shuffleLieux();
} }
public List<CarteLieu> getLieux() {
return this.lieux;
}
public boolean choisir(Joueur joueur) { public boolean choisir(Joueur joueur) {
return gj.choisir(joueur); return gj.choisir(joueur);
} }
@ -377,4 +400,10 @@ public class Plateau extends Thread{
List<Joueur> joueurs = this.getJoueurs(); List<Joueur> joueurs = this.getJoueurs();
return gj.choisirParmisTous(joueur,joueurs); return gj.choisirParmisTous(joueur,joueurs);
} }
public void updateVieJoueur(Joueur joueur, int damage) {
gj.updateVieJoueur(joueur,damage);
}
} }