Ajout LieuZJ

This commit is contained in:
Paul Gross 2020-05-11 13:55:11 +02:00
parent df54f21dfd
commit b595503b7b
9 changed files with 152 additions and 47 deletions

View File

@ -1,20 +1,23 @@
package effet; package effet;
import java.util.Arrays;
import java.util.List;
import main.Joueur; import main.Joueur;
public class EffetChoisirEffet extends Effet{ public class EffetChoisirEffet extends Effet{
private Effet[] effets; private List<Effet> effets;
public EffetChoisirEffet(Effet ...effets) { public EffetChoisirEffet(Effet ...effets) {
super(null); super(null);
this.effets = effets; this.effets = Arrays.asList(effets);
} }
@Override @Override
public void utiliser(Joueur joueur) { public void utiliser(Joueur joueur) {
Effet effet = joueur.choisir(effets); Effet effet = (Effet) joueur.choisir(effets);
effet.utiliser(joueur); effet.utiliser(joueur);
} }

View File

@ -81,6 +81,7 @@ public class JoueurIHM {
AnchorPane.setLeftAnchor(p,0.0); AnchorPane.setLeftAnchor(p,0.0);
AnchorPane.setRightAnchor(p,0.0); AnchorPane.setRightAnchor(p,0.0);
AnchorPane.setTopAnchor(p,0.0); AnchorPane.setTopAnchor(p,0.0);
} }

View File

@ -0,0 +1,29 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import main.GestionnaireJeu;
public class LieuZJ implements Initializable {
@FXML private Button okButton;
@FXML private ImageView imageView;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
okButton.setOnAction(x -> {
GestionnaireJeu.notifyPlateau();
});
}
public void setImageView(Image imageCarte) {
this.imageView.setImage(imageCarte);
}
}

View File

@ -287,7 +287,6 @@ public class PlateauController implements Initializable {
for(JoueurIHM joueurIHM : joueursIHM) { for(JoueurIHM joueurIHM : joueursIHM) {
if(joueurIHM.getJoueur().equals(j)) return joueurIHM; if(joueurIHM.getJoueur().equals(j)) return joueurIHM;
} }
return null; return null;
} }
@ -325,7 +324,6 @@ public class PlateauController implements Initializable {
getPaneJoueur(i).getChildren().setAll(); getPaneJoueur(i).getChildren().setAll();
} }
} }
} }
public void rollDice(Joueur joueur, int typeDice, int[] rolls) { public void rollDice(Joueur joueur, int typeDice, int[] rolls) {
@ -342,6 +340,19 @@ public class PlateauController implements Initializable {
JoueurIHM jihm = getJoueurIHM(j); JoueurIHM jihm = getJoueurIHM(j);
jihm.setZoneJoueur(root); jihm.setZoneJoueur(root);
} }
public void afficherLieu(Joueur j) throws IOException {
final URL fxmlURL = getClass().getResource("/ihm/ressources/LieuZJ.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane root = (Pane)fxmlLoader.load();
LieuZJ lzj = fxmlLoader.getController();
lzj.setImageView(this.getImageCarte(j.getCarteLieu()));
JoueurIHM jihm = getJoueurIHM(j);
jihm.setZoneJoueur(root);
}
public boolean getChoix(Joueur joueur) { public boolean getChoix(Joueur joueur) {
JoueurIHM jihm = getJoueurIHM(joueur); JoueurIHM jihm = getJoueurIHM(joueur);
@ -384,4 +395,7 @@ public class PlateauController implements Initializable {
BufferedImage bi = this.mapRessourcesCartes.get(carte); BufferedImage bi = this.mapRessourcesCartes.get(carte);
return RessourceLoader.toJavaFX(bi); return RessourceLoader.toJavaFX(bi);
} }
} }

View File

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<AnchorPane xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.LieuZJ">
<children>
<SplitPane dividerPositions="0.6212121212121212" styleClass="background" stylesheets="@style/plateau.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<items>
<AnchorPane>
<children>
<VBox prefHeight="200.0" prefWidth="100.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Label styleClass="text" text="Vous arrivez sur cette Carte Lieu" textOverrun="CLIP" wrapText="true">
<font>
<Font size="14.0" />
</font>
</Label>
<Button fx:id="okButton" mnemonicParsing="false" styleClass="bouton" text="Ok" />
</children>
</VBox>
</children>
</AnchorPane>
<AnchorPane>
<children>
<ImageView fx:id="imageView" fitHeight="158.0" fitWidth="132.0" pickOnBounds="true" preserveRatio="true" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
</children>
</AnchorPane>
</items>
</SplitPane>
</children>
</AnchorPane>

View File

@ -3,16 +3,26 @@
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
<?import javafx.scene.layout.AnchorPane?> <?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<AnchorPane fx:id="root" minHeight="0.0" minWidth="0.0" prefHeight="129.0" prefWidth="201.0" style="-fx-background-color: white;" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirBoolean"> <AnchorPane fx:id="root" minHeight="0.0" minWidth="0.0" prefHeight="289.0" prefWidth="450.0" styleClass="background" stylesheets="@style/plateau.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirBoolean">
<children> <children>
<Label fx:id="titre" layoutX="8.0" layoutY="-11.0" prefHeight="26.0" prefWidth="128.0" text="Voulez vous faire cette action ?" AnchorPane.bottomAnchor="77.0" AnchorPane.leftAnchor="8.0" AnchorPane.rightAnchor="7.0" AnchorPane.topAnchor="-11.0"> <VBox alignment="CENTER" layoutX="37.0" layoutY="14.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<font> <children>
<Font size="13.0" /> <Label fx:id="titre" alignment="CENTER" prefHeight="88.0" prefWidth="158.0" styleClass="text" text="Voulez vous faire cette action ?" wrapText="true">
</font> <font>
</Label> <Font size="13.0" />
<Button fx:id="ouiButton" layoutX="34.0" layoutY="85.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="45.0" text="Oui" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="34.0" AnchorPane.rightAnchor="122.0" AnchorPane.topAnchor="85.0" /> </font>
<Button fx:id="nonButton" layoutX="126.0" layoutY="85.0" mnemonicParsing="false" prefHeight="30.0" prefWidth="45.0" text="Non" AnchorPane.bottomAnchor="14.0" AnchorPane.leftAnchor="126.0" AnchorPane.rightAnchor="30.0" AnchorPane.topAnchor="85.0" /> </Label>
<HBox alignment="CENTER">
<children>
<Button fx:id="ouiButton" mnemonicParsing="false" prefHeight="30.0" prefWidth="45.0" styleClass="bouton" text="Oui" />
<Button fx:id="nonButton" mnemonicParsing="false" prefHeight="30.0" prefWidth="45.0" styleClass="bouton" text="Non" />
</children>
</HBox>
</children>
</VBox>
</children> </children>
</AnchorPane> </AnchorPane>

View File

@ -43,7 +43,7 @@ public class GestionnaireJeu {
plateau.start(); plateau.start();
} }
public Joueur choisirParmisTous(Joueur joueur, List<Joueur> joueurs) { public Joueur choisirParmisListe(Joueur joueur, List<Joueur> joueurs) {
return joueurs.get(0); return joueurs.get(0);
} }
@ -51,16 +51,24 @@ public class GestionnaireJeu {
public Effet choisirEffet(Joueur joueur, Effet[] effets) { public Effet choisirEffet(Joueur joueur, Effet[] effets) {
return effets[0]; return effets[0];
} }
public Joueur choisirAdjacents(Joueur joueur, List<Joueur> joueurs) {
return joueurs.get(0);
}
public void deplacer(Joueur currentJoueur) { public void deplacer(Joueur currentJoueur) {
Platform.runLater(() -> { Platform.runLater(() -> {
pc.deplacer(currentJoueur); pc.deplacer(currentJoueur);
}); });
}
public void afficherLieu(Joueur currentJoueur) {
Platform.runLater(() -> {
try {
pc.afficherLieu(currentJoueur);
} catch (IOException e) {
e.printStackTrace();
}
});
this.waitPlateau();
} }
public void updateVieJoueur(Joueur joueur, int damage) { public void updateVieJoueur(Joueur joueur, int damage) {
@ -71,6 +79,7 @@ public class GestionnaireJeu {
} }
public boolean choisir(Joueur joueur) { public boolean choisir(Joueur joueur) {
Platform.runLater(() -> { Platform.runLater(() -> {
try { try {
pc.afficherChoisir(joueur); pc.afficherChoisir(joueur);
@ -93,7 +102,6 @@ public class GestionnaireJeu {
try { try {
return query.get().booleanValue(); return query.get().booleanValue();
} catch (InterruptedException | ExecutionException e) { } catch (InterruptedException | ExecutionException e) {
e.printStackTrace(); e.printStackTrace();
} }
@ -166,6 +174,8 @@ public class GestionnaireJeu {
public RessourceLoader getRessourceLoader() { public RessourceLoader getRessourceLoader() {
return this.ressourceLoader; return this.ressourceLoader;
} }

View File

@ -134,10 +134,8 @@ public class Joueur {
j2.gestionnaireEquipements.retirer(equipement); j2.gestionnaireEquipements.retirer(equipement);
this.gestionnaireEquipements.ajouter(equipement); } this.gestionnaireEquipements.ajouter(equipement); }
public Object choisir(List<?> list) {
return list.get(0);
}
public void attaquer(Joueur j2, int attaqueDice) { public void attaquer(Joueur j2, int attaqueDice) {
int blessure = evaluerImmunite(j2)*(this.evaluerAttaque(j2) + attaqueDice); int blessure = evaluerImmunite(j2)*(this.evaluerAttaque(j2) + attaqueDice);
@ -170,22 +168,6 @@ public class Joueur {
public Plateau getPlateau() { public Plateau getPlateau() {
return this.plateau; return this.plateau;
} }
public boolean choisir() {
return this.plateau.choisir(this);
}
public Joueur choisirAdjacents() {
return this.plateau.choisirAdjacents(this);
}
public Effet choisir(Effet[] effets) {
return this.plateau.choisirEffet(this,effets);
}
public Joueur choisiParmisTous() {
return this.plateau.choisirParmisTous(this);
}
public boolean getRevele() { public boolean getRevele() {
return this.revele; return this.revele;
@ -220,8 +202,6 @@ public class Joueur {
cl.ajouterJoueur(this); cl.ajouterJoueur(this);
} }
public CarteLieu getCarteLieu() { public CarteLieu getCarteLieu() {
return this.carteLieu; return this.carteLieu;
} }
@ -255,5 +235,23 @@ public class Joueur {
return !joueurs.isEmpty(); return !joueurs.isEmpty();
} }
public boolean choisir() {
return this.plateau.choisir(this);
}
public Object choisir(List<?> list) {
return list.get(0);
}
public Joueur choisirAdjacents() {
return this.plateau.choisirAdjacents(this);
}
public Joueur choisiParmisTous() {
return this.plateau.choisirParmisTous(this);
}
} }

View File

@ -269,10 +269,11 @@ 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);
System.out.println("OUI");
if(isPartieTerminee()) break; 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 ?");
gj.afficherLieu(currentJoueur);
if(currentJoueur.choisir()) { if(currentJoueur.choisir()) {
System.out.println("Vous activez l'effet du lieu."); System.out.println("Vous activez l'effet du lieu.");
System.out.println("Vous avez "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv"); System.out.println("Vous avez "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv");
@ -286,7 +287,8 @@ public class Plateau extends Thread{
System.out.println("Souhaitez vous attaquer quelqu'un ?"); System.out.println("Souhaitez vous attaquer quelqu'un ?");
if(currentJoueur.choisir()){ if(currentJoueur.choisir()){
if(currentJoueur.hasOpponents()) { if(currentJoueur.hasOpponents()) {
Joueur cible = currentJoueur.choisirAdjacents(); List<Joueur> adjacents = currentJoueur.getJoueursAdjacents();
Joueur cible = (Joueur) currentJoueur.choisir(adjacents);
attaquer(currentJoueur,cible); attaquer(currentJoueur,cible);
if(isPartieTerminee()) break; if(isPartieTerminee()) break;
}else { }else {
@ -439,9 +441,9 @@ public class Plateau extends Thread{
joueurs.remove(joueur); joueurs.remove(joueur);
joueurs.addAll(cl.getJoueursAdjacents()); joueurs.addAll(cl.getJoueursAdjacents());
return gj.choisirAdjacents(joueur, joueurs); return gj.choisirParmisListe(joueur, joueurs);
} }
public Effet choisirEffet(Joueur joueur, Effet[] effets) { public Effet choisirEffet(Joueur joueur, Effet[] effets) {
return gj.choisirEffet(joueur,effets); return gj.choisirEffet(joueur,effets);
@ -449,7 +451,7 @@ public class Plateau extends Thread{
public Joueur choisirParmisTous(Joueur joueur) { public Joueur choisirParmisTous(Joueur joueur) {
List<Joueur> joueurs = this.getJoueurs(); List<Joueur> joueurs = this.getJoueurs();
return gj.choisirParmisTous(joueur,joueurs); return gj.choisirParmisListe(joueur,joueurs);
} }