Merge branch 'development' of https://github.com/PTE-SH/ShadowHunterGame into development
This commit is contained in:
commit
705503a7f1
@ -12,7 +12,8 @@ public abstract class CarteCondition extends CarteEffet implements Serializable{
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = 903022795821166067L;
|
||||
|
||||
private Condition condition;
|
||||
|
||||
public CarteCondition() {
|
||||
super("","");
|
||||
this.condition = new Condition();
|
||||
@ -21,12 +22,11 @@ public abstract class CarteCondition extends CarteEffet implements Serializable{
|
||||
|
||||
public CarteCondition(String nom, String description) {
|
||||
super(nom, description);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private Condition condition;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
|
@ -120,7 +120,7 @@ public class CreatingCardsTest {
|
||||
// Ténèbre
|
||||
|
||||
// Araignée Sanguinaire
|
||||
/*
|
||||
|
||||
DatabaseManager.queryInsertObject(17, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
|
||||
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)))));
|
||||
|
||||
@ -135,18 +135,18 @@ public class CreatingCardsTest {
|
||||
|
||||
DatabaseManager.queryInsertObject(20, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
|
||||
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true)))));
|
||||
*/
|
||||
|
||||
// Dynamite
|
||||
|
||||
// 21
|
||||
|
||||
|
||||
// Hache tueuse
|
||||
for(int i = 0; i <= 2; i++) {
|
||||
DatabaseManager.queryInsertObject(22+i,new CarteEquipementStat(CartePiochable.Type.TENEBRE,
|
||||
|
||||
DatabaseManager.queryInsertObject(22,new CarteEquipementStat(CartePiochable.Type.TENEBRE,
|
||||
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
|
||||
}
|
||||
/*
|
||||
|
||||
|
||||
DatabaseManager.queryInsertObject(22,new CarteEquipementStat(CartePiochable.Type.TENEBRE,
|
||||
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
|
||||
|
||||
@ -171,7 +171,7 @@ public class CreatingCardsTest {
|
||||
));
|
||||
|
||||
// 29
|
||||
*/
|
||||
|
||||
DatabaseManager.queryInsertObject(30,new CartePiochable(CartePiochable.Type.TENEBRE,
|
||||
new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))));
|
||||
|
||||
|
@ -46,7 +46,7 @@ public class ActionAltererStatistiquesJoueur extends Action{
|
||||
{
|
||||
j2.addToStat(key, valeur);
|
||||
}else {
|
||||
j2.setStat(key, valeur);
|
||||
j2.updateStat(key, valeur);
|
||||
}
|
||||
}
|
||||
|
||||
@ -82,6 +82,6 @@ public class ActionAltererStatistiquesJoueur extends Action{
|
||||
mot2 = " le ";
|
||||
}
|
||||
|
||||
return mot1+" "+valeur+" "+key+mot2+"joueur";
|
||||
return mot1+" "+Math.abs(valeur)+" "+key+mot2+"joueur";
|
||||
}
|
||||
}
|
||||
|
@ -6,12 +6,19 @@ import java.util.List;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import carte.CarteEquipement;
|
||||
import javafx.animation.KeyFrame;
|
||||
import javafx.animation.Timeline;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.image.ImageView;
|
||||
import javafx.scene.layout.GridPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.util.Duration;
|
||||
import main.Contexte;
|
||||
import main.GestionnaireJeu;
|
||||
import main.Joueur;
|
||||
import main.JoueurVirtuel;
|
||||
|
||||
public class ChoisirEquipement implements Initializable{
|
||||
@FXML private GridPane grilleEquipement;
|
||||
@ -63,7 +70,6 @@ public class ChoisirEquipement implements Initializable{
|
||||
iv.setFitHeight(100);
|
||||
iv.setFitHeight(100);
|
||||
iv.setPreserveRatio(true);
|
||||
|
||||
hbox.getChildren().add(iv);
|
||||
iv.setOnMouseClicked(e -> {
|
||||
equipementSelected = ce;
|
||||
@ -71,4 +77,15 @@ public class ChoisirEquipement implements Initializable{
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void fireBtnIA(JoueurVirtuel jIA, Contexte c) {
|
||||
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(2000), ae -> {
|
||||
equipementSelected = jIA.choisirEquipement(equipements);
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
}));
|
||||
timeline.play();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -120,6 +120,9 @@ public class ChoisirJoueur implements Initializable {
|
||||
case CHOISIR_VISION:
|
||||
titre.setText("Choisissez le joueur à qui passer la carte vision!");
|
||||
break;
|
||||
case VOLER_EQUIP:
|
||||
titre.setText("Choisissez le joueur à qui voler un equipement!");
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
|
22
src/ihm/controller/FinDePartieControlleur.java
Normal file
22
src/ihm/controller/FinDePartieControlleur.java
Normal file
@ -0,0 +1,22 @@
|
||||
package ihm.controller;
|
||||
|
||||
import java.net.URL;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.Pane;
|
||||
|
||||
public class FinDePartieControlleur implements Initializable {
|
||||
|
||||
@FXML private Pane rootPane;
|
||||
@FXML private Label labelWinner;
|
||||
|
||||
|
||||
@Override
|
||||
public void initialize(URL arg0, ResourceBundle arg1) {
|
||||
|
||||
labelWinner.setText("ceci est un test d'affichage");
|
||||
}
|
||||
}
|
@ -1,11 +1,13 @@
|
||||
package ihm.controller;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import carte.CarteEquipement;
|
||||
import database.RessourceLoader;
|
||||
import ihm.EffetSonore;
|
||||
import ihm.ImageViewEquipement;
|
||||
import javafx.application.Platform;
|
||||
import javafx.scene.Node;
|
||||
@ -77,6 +79,10 @@ public class JoueurIHM {
|
||||
}
|
||||
|
||||
private void actionReveler(Button btn) {
|
||||
|
||||
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
|
||||
EffetSonore.playSoundEffect(fileSound1);
|
||||
|
||||
ImageView iv = this.getCartePersonnage();
|
||||
System.out.println(this.joueur.getCartePersonnage());
|
||||
Image im = this.pc.getImageCarte(this.joueur.getCartePersonnage());
|
||||
@ -106,7 +112,6 @@ public class JoueurIHM {
|
||||
iv.fitHeightProperty().bind(gp.heightProperty());
|
||||
iv.fitHeightProperty().bind(gp.heightProperty());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
iv.setOnMouseReleased(release -> {
|
||||
@ -141,6 +146,9 @@ public class JoueurIHM {
|
||||
|
||||
private void utiliserCapacite() {
|
||||
|
||||
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
|
||||
EffetSonore.playSoundEffect(fileSound1);
|
||||
|
||||
AnchorPane save = getZoneJoueur();
|
||||
joueur.utiliserCapacite();
|
||||
Pane pane = null;
|
||||
|
@ -2,6 +2,7 @@ package ihm.controller;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import effet.action.Action;
|
||||
import ihm.Die;
|
||||
import ihm.DieImages;
|
||||
import javafx.animation.KeyFrame;
|
||||
@ -27,17 +28,28 @@ public class LancerDes {
|
||||
private Contexte contexte;
|
||||
private int typeDe;
|
||||
private int[] rolls;
|
||||
|
||||
|
||||
private final static int LANCER_DE_4 = 0;
|
||||
private final static int LANCER_DE_6 = 1;
|
||||
private final static int LANCER_DES = 2;
|
||||
|
||||
public LancerDes(int typeDe, int[] rolls, Contexte c){
|
||||
|
||||
public LancerDes(int typeDe, int[] rolls, Contexte c) {
|
||||
this.typeDe = typeDe;
|
||||
this.rolls = rolls;
|
||||
this.contexte = c;
|
||||
}
|
||||
|
||||
|
||||
private Button interpret(String s) {
|
||||
|
||||
String styles = "-fx-border-color: #e2e2e2;" + "-fx-border-width: 2;" + "-fx-background-radius: 0;"
|
||||
+ "-fx-background-color: #1d1d1d;" + "-fx-text-fill: #d8d8d8;"
|
||||
+ "-fx-background-insets: 0 0 0 0, 0, 1, 2;";
|
||||
|
||||
Button b = new Button(s);
|
||||
b.setStyle(styles);
|
||||
return b;
|
||||
}
|
||||
|
||||
public VBox initLancer(Joueur joueur) {
|
||||
switch (typeDe) {
|
||||
case LANCER_DE_4:
|
||||
@ -46,11 +58,10 @@ public class LancerDes {
|
||||
return initLancerD6(joueur);
|
||||
case LANCER_DES:
|
||||
return initLancerBoth(joueur);
|
||||
default :
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private VBox initLancerD4(Joueur j) {
|
||||
DieImages images = new DieImages(4);
|
||||
@ -58,43 +69,39 @@ public class LancerDes {
|
||||
ImageView stackpane = die.getdieFace();
|
||||
stackpane.setFitHeight(100);
|
||||
stackpane.setFitWidth(100);
|
||||
Button btn = new Button();
|
||||
Button btn = interpret("Lancer dé");
|
||||
Text txt = new Text("Lancez le dé");
|
||||
txt.setFont(Font.font(null, null, null, 12));
|
||||
txt.setFill(Color.WHITE);
|
||||
btn.setText("Lancer dé");
|
||||
txt.setFont(Font.font(null, null, null, 12));
|
||||
txt.setFill(Color.WHITE);
|
||||
btn.setOnAction((ActionEvent event) -> {
|
||||
btn.setDisable(true);// Disable Button
|
||||
Random random = new Random();
|
||||
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(0.1), (actionEvent) -> {
|
||||
int tempRandom = random.nextInt(4)+1;
|
||||
int tempRandom = random.nextInt(4) + 1;
|
||||
die.setDieFace(tempRandom);
|
||||
}));
|
||||
|
||||
|
||||
timeline.setCycleCount(20);
|
||||
timeline.play();
|
||||
timeline.setOnFinished(actionEvent -> {
|
||||
|
||||
|
||||
die.setDieFace(rolls[0]);
|
||||
txt.setText("Vous avez obtenu "+rolls[0]);
|
||||
Timeline timeline2 = new Timeline(new KeyFrame(
|
||||
Duration.millis(2000),
|
||||
ae -> {
|
||||
|
||||
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
}));
|
||||
timeline2.play();
|
||||
txt.setText("Vous avez obtenu " + rolls[0]);
|
||||
Timeline timeline2 = new Timeline(new KeyFrame(Duration.millis(2000), ae -> {
|
||||
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
}));
|
||||
timeline2.play();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
HBox des = new HBox(stackpane);
|
||||
des.setAlignment(Pos.CENTER);
|
||||
VBox root = new VBox(txt,des, new StackPane(btn));
|
||||
VBox root = new VBox(txt, des, new StackPane(btn));
|
||||
root.setAlignment(Pos.CENTER);
|
||||
root.setSpacing(20);
|
||||
if(j instanceof JoueurVirtuel)
|
||||
btn.fire();
|
||||
if (j instanceof JoueurVirtuel)
|
||||
btn.fire();
|
||||
return root;
|
||||
}
|
||||
|
||||
@ -104,44 +111,41 @@ public class LancerDes {
|
||||
ImageView stackpane = die.getdieFace();
|
||||
stackpane.setFitHeight(100);
|
||||
stackpane.setFitWidth(100);
|
||||
Button btn = new Button();
|
||||
Button btn = interpret("Lancer dé");
|
||||
Text txt = new Text("Lancez le dé");
|
||||
txt.setFont(Font.font(null, null, null, 12));
|
||||
txt.setFill(Color.WHITE);
|
||||
btn.setText("Lancer dé");
|
||||
txt.setFont(Font.font(null, null, null, 12));
|
||||
txt.setFill(Color.WHITE);
|
||||
btn.setOnAction((ActionEvent event) -> {
|
||||
btn.setDisable(true);// Disable Button
|
||||
Random random = new Random();
|
||||
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(.1), (actionEvent) -> {
|
||||
int tempRandom = random.nextInt(6)+1;
|
||||
int tempRandom = random.nextInt(6) + 1;
|
||||
die.setDieFace(tempRandom);
|
||||
}));
|
||||
|
||||
|
||||
timeline.setCycleCount(20);
|
||||
timeline.play();
|
||||
timeline.setOnFinished(actionEvent -> {
|
||||
|
||||
|
||||
die.setDieFace(rolls[0]);
|
||||
txt.setText("Vous avez obtenu "+rolls[0]);
|
||||
Timeline timeline2 = new Timeline(new KeyFrame(
|
||||
Duration.millis(2000),
|
||||
ae -> {
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
}));
|
||||
timeline2.play();
|
||||
txt.setText("Vous avez obtenu " + rolls[0]);
|
||||
Timeline timeline2 = new Timeline(new KeyFrame(Duration.millis(2000), ae -> {
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
}));
|
||||
timeline2.play();
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
HBox des = new HBox(stackpane);
|
||||
des.setAlignment(Pos.CENTER);
|
||||
VBox root = new VBox(txt,des, new StackPane(btn));
|
||||
VBox root = new VBox(txt, des, new StackPane(btn));
|
||||
root.setAlignment(Pos.CENTER);
|
||||
root.setSpacing(20);
|
||||
if(j instanceof JoueurVirtuel)
|
||||
if (j instanceof JoueurVirtuel)
|
||||
btn.fire();
|
||||
return root;
|
||||
}
|
||||
|
||||
|
||||
private VBox initLancerBoth(Joueur j) {
|
||||
DieImages images = new DieImages(6);
|
||||
DieImages images2 = new DieImages(4);
|
||||
@ -153,49 +157,46 @@ public class LancerDes {
|
||||
stackpane2.setFitHeight(100);
|
||||
stackpane.setFitWidth(100);
|
||||
stackpane2.setFitWidth(100);
|
||||
Button btn = new Button();
|
||||
Button btn = interpret("Lancer dés");
|
||||
Text txt = new Text("Lancez les dés");
|
||||
txt.setFont(Font.font(null, null, null, 12));
|
||||
txt.setFill(Color.WHITE);
|
||||
btn.setText("Lancer dés");
|
||||
txt.setFont(Font.font(null, null, null, 12));
|
||||
txt.setFill(Color.WHITE);
|
||||
btn.setOnAction((ActionEvent event) -> {
|
||||
btn.setDisable(true);// Disable Button
|
||||
Random random = new Random();
|
||||
|
||||
|
||||
Timeline timeline = new Timeline(new KeyFrame(Duration.seconds(.1), (actionEvent) -> {
|
||||
int tempRandom = random.nextInt(6)+1;
|
||||
int tempRandom2 = random.nextInt(4)+1;
|
||||
int tempRandom = random.nextInt(6) + 1;
|
||||
int tempRandom2 = random.nextInt(4) + 1;
|
||||
die.setDieFace(tempRandom);
|
||||
die2.setDieFace(tempRandom2);
|
||||
}));
|
||||
|
||||
|
||||
timeline.setCycleCount(20);
|
||||
timeline.play();
|
||||
timeline.setOnFinished(actionEvent -> {
|
||||
|
||||
|
||||
die.setDieFace(rolls[1]);
|
||||
die2.setDieFace(rolls[0]);
|
||||
|
||||
int result = rolls[0]+rolls[1];
|
||||
|
||||
txt.setText("Vous avez obtenu "+result);
|
||||
Timeline timeline2 = new Timeline(new KeyFrame(
|
||||
Duration.millis(2000),
|
||||
ae -> {
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
|
||||
}));
|
||||
timeline2.play();
|
||||
|
||||
int result = rolls[0] + rolls[1];
|
||||
|
||||
txt.setText("Vous avez obtenu " + result);
|
||||
Timeline timeline2 = new Timeline(new KeyFrame(Duration.millis(2000), ae -> {
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
|
||||
}));
|
||||
timeline2.play();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
|
||||
HBox des = new HBox(stackpane, stackpane2);
|
||||
des.setAlignment(Pos.CENTER);
|
||||
VBox root = new VBox(txt,des, new StackPane(btn));
|
||||
VBox root = new VBox(txt, des, new StackPane(btn));
|
||||
root.setAlignment(Pos.CENTER);
|
||||
root.setSpacing(20);
|
||||
if(j instanceof JoueurVirtuel)
|
||||
if (j instanceof JoueurVirtuel)
|
||||
btn.fire();
|
||||
return root;
|
||||
}
|
||||
|
@ -66,6 +66,10 @@ public class MenuController implements Initializable{
|
||||
}
|
||||
@FXML
|
||||
public void quitterLappli(MouseEvent mouseEvent) throws IOException{
|
||||
|
||||
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
|
||||
EffetSonore.playSoundEffect(fileSound1);
|
||||
|
||||
System.exit(0);
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package ihm.controller;
|
||||
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
@ -27,6 +26,7 @@ import javafx.animation.Timeline;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.fxml.Initializable;
|
||||
import javafx.geometry.Pos;
|
||||
import javafx.scene.Group;
|
||||
import javafx.scene.Parent;
|
||||
import javafx.scene.control.Button;
|
||||
@ -49,13 +49,16 @@ import main.Joueur;
|
||||
import main.JoueurVirtuel;
|
||||
|
||||
public class PlateauController implements Initializable {
|
||||
|
||||
|
||||
private List<Joueur> listJoueur = new ArrayList<Joueur>();
|
||||
private List<JoueurIHM> joueursIHM;
|
||||
|
||||
@FXML private AnchorPane rootPane;
|
||||
@FXML private GridPane gridPaneVie;
|
||||
@FXML public GridPane gridPaneLieux;
|
||||
|
||||
@FXML
|
||||
private AnchorPane rootPane;
|
||||
@FXML
|
||||
private GridPane gridPaneVie;
|
||||
@FXML
|
||||
public GridPane gridPaneLieux;
|
||||
|
||||
private ChoisirBoolean cb;
|
||||
private ChoisirEquipement ce;
|
||||
@ -63,130 +66,128 @@ public class PlateauController implements Initializable {
|
||||
private PiocherCarte pc;
|
||||
private LancerDes ld;
|
||||
|
||||
private static Map<Carte,BufferedImage> mapRessourcesCartes;
|
||||
private static Map<String,BufferedImage> mapRessourcesDosCartes;
|
||||
|
||||
private static Map<Carte, BufferedImage> mapRessourcesCartes;
|
||||
private static Map<String, BufferedImage> mapRessourcesDosCartes;
|
||||
|
||||
public static int DICE_SIX = 1;
|
||||
public static int DICE_QUATRE = 0;
|
||||
public static int DICE_BOTH = 2;
|
||||
|
||||
private final double RES = 200./2250.;
|
||||
|
||||
private final double RES = 200. / 2250.;
|
||||
private ResourceBundle resourceBundle;
|
||||
|
||||
|
||||
/**
|
||||
* initialise les données du plateau
|
||||
*/
|
||||
@Override
|
||||
public void initialize(URL arg0, ResourceBundle arg1) {
|
||||
//System.out.println("Création du plateau ...");
|
||||
|
||||
// System.out.println("Création du plateau ...");
|
||||
|
||||
this.resourceBundle = arg1;
|
||||
this.joueursIHM = new ArrayList<JoueurIHM>();
|
||||
GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu();
|
||||
GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu();
|
||||
RessourceLoader rl = gj.getRessourceLoader();
|
||||
|
||||
|
||||
Map<Integer, Joueur> map = gj.getMapJoueurs();
|
||||
|
||||
for(int i = 0 ; i < gridPaneVie.getChildren().size();i++) {
|
||||
|
||||
|
||||
for (int i = 0; i < gridPaneVie.getChildren().size(); i++) {
|
||||
|
||||
Pane p = (Pane) gridPaneVie.getChildren().get(i);
|
||||
Label l = (Label) p.getChildren().get(1);
|
||||
l.setText(i+"");
|
||||
|
||||
l.setText(i + "");
|
||||
|
||||
}
|
||||
|
||||
for(int i : map.keySet()) {
|
||||
|
||||
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, gridPaneLieux,this));
|
||||
joueursIHM.add(new JoueurIHM(i, map.get(i), getPaneJoueur(i),
|
||||
new Color(Math.random(), Math.random(), Math.random(), 1), gridPaneVie, gridPaneLieux, this));
|
||||
}
|
||||
|
||||
for(int i = 0; i<joueursIHM.size(); i++) {
|
||||
|
||||
for (int i = 0; i < joueursIHM.size(); i++) {
|
||||
joueursIHM.get(i).deplacerPionVie(0);
|
||||
}
|
||||
|
||||
|
||||
|
||||
mapRessourcesCartes = rl.getRessourceCartes();
|
||||
setMapRessourcesDosCartes(rl.getRessourceDosCartes());
|
||||
|
||||
setMapRessourcesDosCartes(rl.getRessourceDosCartes());
|
||||
|
||||
List<CarteLieu> cl = gj.getCartesLieux();
|
||||
List<ImageView> ivs = this.getLieux();
|
||||
|
||||
applyImages(cl,ivs);
|
||||
|
||||
applyImages(cl, ivs);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void applyImages(List<CarteLieu> cls, List<ImageView> ivs) {
|
||||
|
||||
|
||||
int size = cls.size();
|
||||
if(cls.size() == ivs.size()) {
|
||||
|
||||
for(int i = 0; i < size; i++) {
|
||||
|
||||
if (cls.size() == ivs.size()) {
|
||||
|
||||
for (int i = 0; i < size; i++) {
|
||||
|
||||
CarteLieu cl = cls.get(i);
|
||||
ImageView iv = ivs.get(i);
|
||||
|
||||
|
||||
BufferedImage bi = mapRessourcesCartes.get(cl);
|
||||
Image image = RessourceLoader.toJavaFX(bi);
|
||||
applyImageLieu(iv,image);
|
||||
}
|
||||
}
|
||||
applyImageLieu(iv, image);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void applyImageLieu(ImageView iv, Image im) {
|
||||
|
||||
|
||||
iv.setImage(im);
|
||||
Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
|
||||
iv.setFitWidth(RES*screenSize.width);
|
||||
//iv.fitHeightProperty().bind(sp.heightProperty());
|
||||
//iv.fitWidthProperty().bind(sp.widthProperty());
|
||||
|
||||
iv.setFitWidth(RES * screenSize.width);
|
||||
// iv.fitHeightProperty().bind(sp.heightProperty());
|
||||
// iv.fitWidthProperty().bind(sp.widthProperty());
|
||||
|
||||
iv.setPreserveRatio(true);
|
||||
//iv.fitWidthProperty().bind(sp.widthProperty());
|
||||
// iv.fitWidthProperty().bind(sp.widthProperty());
|
||||
}
|
||||
|
||||
private Pane getPaneJoueur(int i) {
|
||||
|
||||
System.out.println("i "+i);
|
||||
int position = i%8;
|
||||
HBox hb = (HBox) rootPane.getChildren().get(0);
|
||||
private Pane getPaneJoueur(int i) {
|
||||
|
||||
System.out.println("i " + i);
|
||||
int position = i % 8;
|
||||
HBox hb = (HBox) rootPane.getChildren().get(0);
|
||||
GridPane gp = null;
|
||||
|
||||
|
||||
// BAS
|
||||
if(position < 2) {
|
||||
if (position < 2) {
|
||||
VBox group = (VBox) hb.getChildren().get(1);
|
||||
gp = (GridPane) group.getChildren().get(2);
|
||||
|
||||
//DROITE
|
||||
}else if(position < 4) {
|
||||
System.out.println("Oui");
|
||||
Group group = (Group) hb.getChildren().get(2);
|
||||
gp = (GridPane) group.getChildren().get(0);
|
||||
|
||||
//HAUT
|
||||
}else if(position < 6) {
|
||||
|
||||
|
||||
// DROITE
|
||||
} else if (position < 4) {
|
||||
System.out.println("Oui");
|
||||
Group group = (Group) hb.getChildren().get(2);
|
||||
gp = (GridPane) group.getChildren().get(0);
|
||||
|
||||
// HAUT
|
||||
} else if (position < 6) {
|
||||
|
||||
VBox group = (VBox) hb.getChildren().get(1);
|
||||
gp = (GridPane) group.getChildren().get(0);
|
||||
|
||||
//GAUCHE
|
||||
}else if(position < 8) {
|
||||
|
||||
// GAUCHE
|
||||
} else if (position < 8) {
|
||||
Group group = (Group) hb.getChildren().get(0);
|
||||
gp = (GridPane) group.getChildren().get(0);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
return (Pane) gp.getChildren().get(i%2);
|
||||
|
||||
return (Pane) gp.getChildren().get(i % 2);
|
||||
}
|
||||
|
||||
|
||||
private List<ImageView> getLieux() {
|
||||
|
||||
|
||||
List<ImageView> views = new ArrayList<ImageView>();
|
||||
for(int i = 0 ; i < gridPaneLieux.getChildren().size(); i++) {
|
||||
|
||||
for (int i = 0; i < gridPaneLieux.getChildren().size(); i++) {
|
||||
|
||||
HBox p = (HBox) gridPaneLieux.getChildren().get(i);
|
||||
for(int j = 0; j < p.getChildren().size(); j++) {
|
||||
for (int j = 0; j < p.getChildren().size(); j++) {
|
||||
StackPane sp = (StackPane) p.getChildren().get(j);
|
||||
ImageView iv = (ImageView) sp.getChildren().get(0);
|
||||
views.add(iv);
|
||||
@ -194,7 +195,7 @@ public class PlateauController implements Initializable {
|
||||
}
|
||||
return views;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Affiche aux yeux de tous la carte personnage du joueur
|
||||
*
|
||||
@ -206,25 +207,23 @@ public class PlateauController implements Initializable {
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Parent root = fxmlLoader.load();
|
||||
|
||||
RevelationController rc = fxmlLoader.getController();
|
||||
rc.showInformation(listJoueur.get(numJoueur));
|
||||
|
||||
|
||||
RevelationController rc = fxmlLoader.getController();
|
||||
rc.showInformation(listJoueur.get(numJoueur));
|
||||
|
||||
PopUp popup = new PopUp(root, "Consulter sa carte");
|
||||
popup.display();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public JoueurIHM getJoueurIHM(Joueur j) {
|
||||
|
||||
for(JoueurIHM joueurIHM : joueursIHM) {
|
||||
if(joueurIHM.getJoueur().equals(j)) return joueurIHM;
|
||||
|
||||
for (JoueurIHM joueurIHM : joueursIHM) {
|
||||
if (joueurIHM.getJoueur().equals(j))
|
||||
return joueurIHM;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Permet de consulter sa carte perssonage en cas d'oublie
|
||||
*
|
||||
@ -236,15 +235,14 @@ public class PlateauController implements Initializable {
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Parent root = fxmlLoader.load();
|
||||
|
||||
|
||||
AfficherCarteController acc = fxmlLoader.getController();
|
||||
acc.showInformation(listJoueur.get(numJoueur));
|
||||
|
||||
|
||||
AfficherCarteController acc = fxmlLoader.getController();
|
||||
acc.showInformation(listJoueur.get(numJoueur));
|
||||
|
||||
PopUp popup = new PopUp(root, "Consulter sa carte");
|
||||
popup.display();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Place les joueurs au bon endroit sur le plateau
|
||||
*
|
||||
@ -252,17 +250,17 @@ public class PlateauController implements Initializable {
|
||||
*/
|
||||
public void placerJoueurs(Map<Integer, Joueur> j) {
|
||||
Set<Integer> set = j.keySet();
|
||||
|
||||
for(int i = 0; i < 8; i++) {
|
||||
if(!set.contains(i)) {
|
||||
|
||||
for (int i = 0; i < 8; i++) {
|
||||
if (!set.contains(i)) {
|
||||
getPaneJoueur(i).getChildren().setAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void rollDice(Joueur joueur, int typeDice, int[] rolls, Contexte c) {
|
||||
|
||||
this.ld=new LancerDes(typeDice,rolls,c);
|
||||
|
||||
this.ld = new LancerDes(typeDice, rolls, c);
|
||||
JoueurIHM jihm = getJoueurIHM(joueur);
|
||||
jihm.setZoneJoueur(ld.initLancer(joueur));
|
||||
}
|
||||
@ -271,143 +269,143 @@ public class PlateauController implements Initializable {
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/choisirBoolean.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
Pane root = (Pane) fxmlLoader.load();
|
||||
this.cb = fxmlLoader.getController();
|
||||
cb.setTitre(contexte);
|
||||
if(j instanceof JoueurVirtuel) {
|
||||
switch(contexte) {
|
||||
case ACTIVER_EFFET_LIEU :
|
||||
if (j instanceof JoueurVirtuel) {
|
||||
switch (contexte) {
|
||||
case ACTIVER_EFFET_LIEU:
|
||||
cb.fireBtnIAEffetLieu();
|
||||
break;
|
||||
case ATTAQUER :
|
||||
cb.fireBtnIAattaquer((JoueurVirtuel)j, j.getJoueursRange());
|
||||
case ATTAQUER:
|
||||
cb.fireBtnIAattaquer((JoueurVirtuel) j, j.getJoueursRange());
|
||||
break;
|
||||
case CHOISIR_VISION :
|
||||
cb.fireBtnIAVision();;
|
||||
case CHOISIR_VISION:
|
||||
cb.fireBtnIAVision();
|
||||
;
|
||||
break;
|
||||
}
|
||||
}
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
jihm.setZoneJoueur(root);
|
||||
}
|
||||
|
||||
|
||||
public void afficherChoisirEquipementVole(Joueur j, List<CarteEquipement> lce) throws IOException {
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/Jouer_tour(2a)voler_equipement.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
Pane root = (Pane) fxmlLoader.load();
|
||||
this.ce = fxmlLoader.getController();
|
||||
this.ce.setListCarteEquipements(lce);
|
||||
this.ce.initChoisirEquipement();
|
||||
if (j instanceof JoueurVirtuel)
|
||||
this.ce.fireBtnIA((JoueurVirtuel) j, Contexte.VOLER_EQUIP);
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
jihm.setZoneJoueur(root);
|
||||
}
|
||||
|
||||
public void afficherAlterationVie(Joueur j, int valeur) throws IOException, InterruptedException {
|
||||
|
||||
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/AlterationVieZJ.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
AlterationVieZJ avzj = fxmlLoader.getController();
|
||||
Pane root = (Pane) fxmlLoader.load();
|
||||
AlterationVieZJ avzj = fxmlLoader.getController();
|
||||
avzj.changeLabel(valeur);
|
||||
|
||||
|
||||
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
Pane p = (Pane) jihm.getZoneJoueur();
|
||||
Pane pane = new Pane();
|
||||
|
||||
if(p.getChildren() != null && p.getChildren().size() > 0) {
|
||||
|
||||
|
||||
if (p.getChildren() != null && p.getChildren().size() > 0) {
|
||||
|
||||
pane = (Pane) p.getChildren().get(0);
|
||||
}
|
||||
|
||||
|
||||
jihm.setZoneJoueur(root);
|
||||
Pane pp = pane;
|
||||
Timeline timeline = new Timeline(new KeyFrame(
|
||||
Duration.millis(1000),
|
||||
ae -> {
|
||||
|
||||
jihm.resetZoneJoueur();
|
||||
jihm.setZoneJoueur(pp);
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(1000), ae -> {
|
||||
|
||||
jihm.resetZoneJoueur();
|
||||
jihm.setZoneJoueur(pp);
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
}));
|
||||
timeline.play();
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
Pane root = (Pane) fxmlLoader.load();
|
||||
LieuZJ lzj = fxmlLoader.getController();
|
||||
lzj.setImageView(this.getImageCarte(j.getCarteLieu()));
|
||||
if(j instanceof JoueurVirtuel) lzj.fireBtnIA();
|
||||
if (j instanceof JoueurVirtuel)
|
||||
lzj.fireBtnIA();
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
if(jihm.getPosition()==4 || jihm.getPosition()==5) {
|
||||
SplitPane s=(SplitPane)root.getChildren().get(0);
|
||||
AnchorPane a=(AnchorPane)s.getItems().get(0);
|
||||
VBox v= (VBox)a.getChildren().get(0);
|
||||
AnchorPane b=(AnchorPane)s.getItems().get(1);
|
||||
ImageView i= (ImageView)b.getChildren().get(0);
|
||||
if (jihm.getPosition() == 4 || jihm.getPosition() == 5) {
|
||||
SplitPane s = (SplitPane) root.getChildren().get(0);
|
||||
AnchorPane a = (AnchorPane) s.getItems().get(0);
|
||||
VBox v = (VBox) a.getChildren().get(0);
|
||||
AnchorPane b = (AnchorPane) s.getItems().get(1);
|
||||
ImageView i = (ImageView) b.getChildren().get(0);
|
||||
|
||||
v.setRotate(180);
|
||||
i.setRotate(180);
|
||||
s.setRotate(180);
|
||||
}
|
||||
|
||||
|
||||
jihm.setZoneJoueur(root);
|
||||
}
|
||||
|
||||
public void afficherChoisirJoueur(Joueur j, List<Joueur> joueurs, Contexte contexte) throws IOException {
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/choixJoueurAttq.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
|
||||
Pane root = (Pane) fxmlLoader.load();
|
||||
|
||||
List<JoueurIHM> joueursIHM = toJoueursIHM(joueurs);
|
||||
|
||||
|
||||
this.cj = fxmlLoader.getController();
|
||||
cj.setTitre(contexte);
|
||||
this.cj.setListJoueursIHM(joueursIHM);
|
||||
this.cj.initButtons();
|
||||
if(j instanceof JoueurVirtuel)
|
||||
cj.fireBtnIA((JoueurVirtuel)j, contexte);
|
||||
if (j instanceof JoueurVirtuel)
|
||||
cj.fireBtnIA((JoueurVirtuel) j, contexte);
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
jihm.setZoneJoueur(root);
|
||||
}
|
||||
private List<JoueurIHM> toJoueursIHM(List<Joueur> joueurs) {
|
||||
|
||||
List<JoueurIHM> list = new ArrayList<JoueurIHM>();
|
||||
|
||||
for(Joueur j : joueurs) {
|
||||
list.add(getJoueurIHM(j));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
private List<JoueurIHM> toJoueursIHM(List<Joueur> joueurs) {
|
||||
|
||||
List<JoueurIHM> list = new ArrayList<JoueurIHM>();
|
||||
|
||||
for (Joueur j : joueurs) {
|
||||
list.add(getJoueurIHM(j));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
public void afficherPiocher(Joueur j) throws IOException {
|
||||
|
||||
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/Jouer_tour(2b)piocher_carte.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
//CartePiochable lzj = fxmlLoader.getController();
|
||||
//lzj.setImageView(this.getImageCarte(j.getCarteLieu()));
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
jihm.setZoneJoueur(root);
|
||||
}
|
||||
public void afficherEffet(Joueur j) throws IOException {
|
||||
|
||||
public void afficherEffet(Joueur j) throws IOException {
|
||||
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/Jouer_tour(2b)piocher_carte.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
//CartePiochable lzj = fxmlLoader.getController();
|
||||
//lzj.setImageView(this.getImageCarte(j.getCarteLieu()));
|
||||
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
jihm.setZoneJoueur(root);
|
||||
}
|
||||
@ -419,187 +417,199 @@ public void afficherEffet(Joueur j) throws IOException {
|
||||
jihm.getZoneJoueur().getChildren().setAll();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public boolean getChoix(Joueur joueur) {
|
||||
JoueurIHM jihm = getJoueurIHM(joueur);
|
||||
boolean result = this.cb.getResult();
|
||||
this.cb = null;
|
||||
jihm.getZoneJoueur().getChildren().setAll();
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public Joueur getChoixJoueur(Joueur joueur) {
|
||||
JoueurIHM jihm = getJoueurIHM(joueur);
|
||||
JoueurIHM result = this.cj.getJoueurSelected();
|
||||
this.cj = null;
|
||||
jihm.getZoneJoueur().getChildren().setAll();
|
||||
return result.getJoueur();
|
||||
JoueurIHM result = this.cj.getJoueurSelected();
|
||||
this.cj = null;
|
||||
jihm.getZoneJoueur().getChildren().setAll();
|
||||
return result.getJoueur();
|
||||
}
|
||||
public Type getChoixCarte(Joueur joueur) {
|
||||
|
||||
public Type getChoixCarte(Joueur joueur) {
|
||||
JoueurIHM jihm = getJoueurIHM(joueur);
|
||||
Type result = this.pc.getCarte();
|
||||
this.pc = null;
|
||||
jihm.getZoneJoueur().getChildren().setAll();
|
||||
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.getZoneJoueur().getChildren().setAll();
|
||||
jIHM.deplacerPionVie(damage);
|
||||
}
|
||||
|
||||
|
||||
@FXML
|
||||
public void mettreEnPause(MouseEvent me) throws IOException {
|
||||
|
||||
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
|
||||
|
||||
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav");
|
||||
EffetSonore.playSoundEffect(fileSound1);
|
||||
|
||||
|
||||
System.out.println("Jeu en pause ...");
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/Pause.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
|
||||
Pane root = (Pane) fxmlLoader.load();
|
||||
|
||||
PopUp pu = new PopUp(root, "Pause");
|
||||
pu.display();
|
||||
}
|
||||
|
||||
|
||||
public static Image getImageCarte(Carte carte) {
|
||||
BufferedImage bi = mapRessourcesCartes.get(carte);
|
||||
return RessourceLoader.toJavaFX(bi);
|
||||
}
|
||||
|
||||
|
||||
public static Image getImageDosCarte(String s) {
|
||||
BufferedImage bi = mapRessourcesDosCartes.get(s);
|
||||
return RessourceLoader.toJavaFX(bi);
|
||||
}
|
||||
|
||||
|
||||
public void ajouterEquipement(Joueur j, CarteEquipement e) {
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
jihm.ajouterEquipement(e);
|
||||
}
|
||||
|
||||
|
||||
public void retirerEquipement(Joueur j, CarteEquipement e) {
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
jihm.retirerEquipement(e);
|
||||
}
|
||||
|
||||
|
||||
public void close() throws IOException {
|
||||
final URL fxmlURL = PlateauController.class.getResource("/ihm/ressources/Menu.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane pane = fxmlLoader.load();
|
||||
rootPane.getChildren().setAll(pane);
|
||||
rootPane.getChildren().setAll(pane);
|
||||
}
|
||||
|
||||
public void afficherLT(Joueur j, CartePiochable cartePiochable) throws IOException {
|
||||
|
||||
|
||||
Image i = getImageCarte(cartePiochable);
|
||||
ImageView iv = new ImageView(i);
|
||||
Pane p = new Pane(iv);
|
||||
PopUp pu = new PopUp(p,"Image");
|
||||
pu.getStage().focusedProperty().addListener((obs,wasFocused,isNowFocused) -> {
|
||||
if(!isNowFocused) {
|
||||
PopUp pu = new PopUp(p, "Image");
|
||||
pu.getStage().focusedProperty().addListener((obs, wasFocused, isNowFocused) -> {
|
||||
if (!isNowFocused) {
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
pu.getStage().hide();
|
||||
}
|
||||
});
|
||||
if(j instanceof JoueurVirtuel) {
|
||||
});
|
||||
if (j instanceof JoueurVirtuel) {
|
||||
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(3000), ae -> {
|
||||
pu.getStage().hide();
|
||||
}));
|
||||
timeline.play();
|
||||
}
|
||||
}
|
||||
pu.display();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void afficherVision(Joueur j, CartePiochable cartePiochable) throws IOException {
|
||||
|
||||
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/RecevoirCarte.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
Pane root = (Pane)fxmlLoader.load();
|
||||
RecevoirCarte lzj = fxmlLoader.getController();
|
||||
Pane root = (Pane) fxmlLoader.load();
|
||||
RecevoirCarte lzj = fxmlLoader.getController();
|
||||
Image im = getImageCarte(cartePiochable);
|
||||
lzj.setImageView(im);
|
||||
lzj.setText("Cachez la carte vision");
|
||||
if(j instanceof JoueurVirtuel) lzj.fireBtnIA();
|
||||
if (j instanceof JoueurVirtuel)
|
||||
lzj.fireBtnIA();
|
||||
JoueurIHM jihm = getJoueurIHM(j);
|
||||
|
||||
if(jihm.getPosition()==4 || jihm.getPosition()==5) {
|
||||
SplitPane s=(SplitPane)root.getChildren().get(0);
|
||||
AnchorPane a=(AnchorPane)s.getItems().get(0);
|
||||
VBox v= (VBox)a.getChildren().get(0);
|
||||
AnchorPane b=(AnchorPane)s.getItems().get(1);
|
||||
ImageView i= (ImageView)b.getChildren().get(0);
|
||||
|
||||
|
||||
v.setRotate(180);
|
||||
i.setRotate(180);
|
||||
s.setRotate(180);
|
||||
}
|
||||
jihm.getZoneJoueur();
|
||||
jihm.setZoneJoueur(root);
|
||||
|
||||
}
|
||||
|
||||
|
||||
public Map<String,BufferedImage> getMapRessourcesDosCartes() {
|
||||
public Map<String, BufferedImage> getMapRessourcesDosCartes() {
|
||||
|
||||
return mapRessourcesDosCartes;
|
||||
}
|
||||
|
||||
|
||||
public void setMapRessourcesDosCartes(Map<String,BufferedImage> mapRessourcesDosCartes) {
|
||||
public void setMapRessourcesDosCartes(Map<String, BufferedImage> mapRessourcesDosCartes) {
|
||||
this.mapRessourcesDosCartes = mapRessourcesDosCartes;
|
||||
}
|
||||
|
||||
|
||||
private Action choixAction;
|
||||
|
||||
|
||||
public void afficherChoisirAction(Joueur joueur, List<Action> list) {
|
||||
|
||||
final URL fxmlURL = getClass().getResource("/ihm/ressources/ChoisirAction.fxml");
|
||||
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
|
||||
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
|
||||
|
||||
|
||||
List<Button> buttons = new ArrayList<Button>();
|
||||
|
||||
for(Action a : list) {
|
||||
Button button = interpret(a);
|
||||
buttons.add(button);
|
||||
button.setOnAction(x -> {
|
||||
this.choixAction = a;
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
|
||||
for (Action a : list) {
|
||||
Button button = interpret(a);
|
||||
buttons.add(button);
|
||||
button.setOnAction(x -> {
|
||||
|
||||
this.choixAction = a;
|
||||
GestionnaireJeu.notifyPlateau();
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
VBox v = new VBox();
|
||||
v.getChildren().addAll(buttons);
|
||||
|
||||
v.setAlignment(Pos.CENTER);
|
||||
v.setSpacing(20.0);
|
||||
JoueurIHM jihm = getJoueurIHM(joueur);
|
||||
jihm.setZoneJoueur(v);
|
||||
|
||||
if (joueur instanceof JoueurVirtuel) {
|
||||
for (Button b : buttons)
|
||||
b.setDisable(true);
|
||||
Timeline timeline = new Timeline(new KeyFrame(Duration.millis(2000), ae -> {
|
||||
Button bchoisi = ((JoueurVirtuel)joueur).choisirEffet(buttons);
|
||||
bchoisi.setDisable(false);
|
||||
bchoisi.fire();
|
||||
}));
|
||||
timeline.play();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Action getChoixAction(Joueur joueur) {
|
||||
return this.choixAction;
|
||||
}
|
||||
|
||||
|
||||
private Button interpret(Action a) {
|
||||
|
||||
String styles = "-fx-border-color: #e2e2e2;" + "-fx-border-width: 2;" + "-fx-background-radius: 0;"
|
||||
+ "-fx-background-color: #1d1d1d;" + "-fx-text-fill: #d8d8d8;"
|
||||
+ "-fx-background-insets: 0 0 0 0, 0, 1, 2;";
|
||||
|
||||
String s = a.toString();
|
||||
Button b = new Button(s);
|
||||
b.setStyle(styles);
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
public void revealJoueur(Joueur joueur) {
|
||||
JoueurIHM jihm = getJoueurIHM(joueur);
|
||||
jihm.reveler();
|
||||
|
@ -239,9 +239,11 @@ public class PlayersController implements Initializable{
|
||||
listeIaLv2.get(indice).setVisible(true);
|
||||
listeIaLv3.get(indice).setVisible(true);
|
||||
|
||||
plus.get(indice).setDisable(true);
|
||||
|
||||
nbJoueursV++;
|
||||
}else {
|
||||
ia.get(indice).setVisible(false);
|
||||
nbJoueursH++;
|
||||
}
|
||||
|
||||
@ -275,7 +277,8 @@ public class PlayersController implements Initializable{
|
||||
nbJoueursH--;
|
||||
}
|
||||
|
||||
|
||||
ia.get(indice).setVisible(true);
|
||||
plus.get(indice).setDisable(false);
|
||||
listeIaLv1.get(indice).setVisible(false);
|
||||
listeIaLv2.get(indice).setVisible(false);
|
||||
listeIaLv3.get(indice).setVisible(false);
|
||||
|
34
src/ihm/ressources/Fin_De_Partie.fxml
Normal file
34
src/ihm/ressources/Fin_De_Partie.fxml
Normal file
@ -0,0 +1,34 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
|
||||
<?import javafx.geometry.Insets?>
|
||||
<?import javafx.scene.control.Label?>
|
||||
<?import javafx.scene.layout.Pane?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
<?import javafx.scene.text.Text?>
|
||||
|
||||
<Pane fx:id="rootPane" onMouseClicked="#slideVolumeMusique" prefHeight="595.0" prefWidth="758.0" styleClass="background" stylesheets="@style/menu.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ParametreController">
|
||||
<children>
|
||||
<VBox alignment="TOP_CENTER" prefHeight="595.0" prefWidth="758.0">
|
||||
<children>
|
||||
<Label alignment="CENTER" contentDisplay="CENTER" prefWidth="346.0" styleClass="titre" text="FIN DE PARTIE">
|
||||
<font>
|
||||
<Font size="36.0" />
|
||||
</font>
|
||||
<padding>
|
||||
<Insets top="50.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label alignment="CENTER" contentDisplay="CENTER" prefHeight="54.0" prefWidth="386.0" styleClass="titre" text="La victoire appartient à:" textAlignment="CENTER">
|
||||
<font>
|
||||
<Font size="36.0" />
|
||||
</font>
|
||||
<VBox.margin>
|
||||
<Insets top="25.0" />
|
||||
</VBox.margin>
|
||||
</Label>
|
||||
<Text fx:id="TextWinner" strokeType="OUTSIDE" strokeWidth="0.0" styleClass="titre" text="(nom des gagnants" />
|
||||
</children>
|
||||
</VBox>
|
||||
</children>
|
||||
</Pane>
|
BIN
src/ihm/ressources/musique/cloche.wav
Normal file
BIN
src/ihm/ressources/musique/cloche.wav
Normal file
Binary file not shown.
@ -9,6 +9,6 @@ public enum Contexte {
|
||||
ACTIVER_EFFET_LIEU,
|
||||
EFFET_BOB,
|
||||
LANCER_DES_4,
|
||||
LANCER_DES_6, CHOISIR_VISION, CHOISIR_ACTION
|
||||
LANCER_DES_6, CHOISIR_VISION, CHOISIR_ACTION, EFFET_CHARLES
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,6 @@ import carte.CartePiochable;
|
||||
import carte.CartePiochable.Type;
|
||||
import carte.CarteVision;
|
||||
import database.RessourceLoader;
|
||||
import effet.Effet;
|
||||
import effet.action.Action;
|
||||
import ihm.controller.PlateauController;
|
||||
import javafx.application.Platform;
|
||||
@ -244,7 +243,9 @@ public class GestionnaireJeu {
|
||||
}
|
||||
|
||||
public static void notifyPlateau() {
|
||||
|
||||
Thread t = threads.pop();
|
||||
|
||||
synchronized(t) {
|
||||
t.notify();
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
package main;
|
||||
import java.io.InputStream;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
@ -7,6 +8,7 @@ import java.util.Map;
|
||||
import carte.CarteEquipement;
|
||||
import carte.CarteLieu;
|
||||
import effet.Effet;
|
||||
import ihm.EffetSonore;
|
||||
import personnage.CartePersonnage;
|
||||
import personnage.Metamorphe;
|
||||
import personnage.CartePersonnage.Equipe;
|
||||
@ -33,6 +35,7 @@ public class Joueur {
|
||||
public static final String PLAYER_NB_EQUIPEMENTS = "nb_equipements";
|
||||
|
||||
private Map<String, Integer> stats;
|
||||
private boolean deathState;
|
||||
|
||||
|
||||
|
||||
@ -44,6 +47,7 @@ public class Joueur {
|
||||
this.nom = nom;
|
||||
this.revele = false;
|
||||
this.gestionnaireEquipements = new GestionnaireEquipements(this);
|
||||
this.deathState = false;
|
||||
|
||||
stats = new HashMap<>();
|
||||
|
||||
@ -65,15 +69,34 @@ public class Joueur {
|
||||
return this.cartePersonnage.getEquipe();
|
||||
}
|
||||
|
||||
private void changeStat(String key, int valeur) {
|
||||
this.stats.put(key, valeur);
|
||||
}
|
||||
public void setStat(String key, int valeur) {
|
||||
this.stats.put(key, valeur);
|
||||
}
|
||||
|
||||
public void updateStat(String key, int valeur) {
|
||||
setStat(key, valeur);
|
||||
if(isDeadStat()) {
|
||||
death();
|
||||
}
|
||||
updateVictoirePlateau();
|
||||
updateVie();
|
||||
}
|
||||
|
||||
public boolean isDeadStat() {
|
||||
return this.stats.get(PLAYER_HP) <= 0;
|
||||
}
|
||||
|
||||
public boolean isDead() {
|
||||
return this.deathState;
|
||||
}
|
||||
|
||||
private void death() {
|
||||
this.deathState = true;
|
||||
this.plateau.death(this);
|
||||
InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/cloche.wav");
|
||||
EffetSonore.playSoundEffect(fileSound1);
|
||||
}
|
||||
|
||||
//pour tests IA
|
||||
public void setHP(int val) {
|
||||
this.stats.put("HP", val);
|
||||
@ -84,9 +107,9 @@ public class Joueur {
|
||||
this.stats.put("nb_equipements", val);
|
||||
}
|
||||
//pour tests IA
|
||||
public void setDamage(int val) {
|
||||
this.stats.put("DAMAGE", val);
|
||||
}
|
||||
public void setDamage(int val) {
|
||||
this.stats.put("DAMAGE", val);
|
||||
}
|
||||
|
||||
private void updateVie() {
|
||||
int damage = damageTaken();
|
||||
@ -99,9 +122,7 @@ public class Joueur {
|
||||
}
|
||||
|
||||
private void updateVictoirePlateau() {
|
||||
|
||||
int result = victoire() ? 0 : 1;
|
||||
this.plateau.setStat(Plateau.PARTIE_FINIE, result);
|
||||
this.plateau.victoire(this);
|
||||
}
|
||||
|
||||
public boolean victoire() {
|
||||
@ -161,7 +182,7 @@ public class Joueur {
|
||||
if(key.contentEquals(PLAYER_HP)) {
|
||||
this.plateau.alerationVie(this,valeur);
|
||||
}
|
||||
this.setStat(key,valeurBase+valeur);
|
||||
this.updateStat(key,valeurBase+valeur);
|
||||
}
|
||||
|
||||
|
||||
@ -179,7 +200,7 @@ public class Joueur {
|
||||
|
||||
public void setCartePersonnage(CartePersonnage cp) {
|
||||
this.cartePersonnage = cp;
|
||||
this.changeStat(PLAYER_HP, cp.getPv());
|
||||
this.setStat(PLAYER_HP, cp.getPv());
|
||||
}
|
||||
|
||||
public void setPlateau(Plateau plateau2) {
|
||||
@ -279,4 +300,10 @@ public class Joueur {
|
||||
public Joueur choisir(List<Joueur> adjacents, Contexte attaquer) {
|
||||
return this.plateau.choisir(this,adjacents, attaquer);
|
||||
}
|
||||
|
||||
public Map<String, Integer> getStats() {
|
||||
return this.stats;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ import java.util.Random;
|
||||
import carte.CarteEquipement;
|
||||
import carte.CarteEquipementStat;
|
||||
import effet.Effet;
|
||||
import javafx.scene.control.Button;
|
||||
|
||||
public class JoueurVirtuel extends Joueur {
|
||||
|
||||
@ -21,7 +22,7 @@ public class JoueurVirtuel extends Joueur {
|
||||
nvDifficulte = lvlIa;
|
||||
}
|
||||
|
||||
public Effet choisirEffet(List<Effet> effets) {
|
||||
public Button choisirEffet(List<Button> effets) {
|
||||
return effets.get((int) Math.floor(Math.random() * effets.size()));
|
||||
}
|
||||
|
||||
|
@ -6,6 +6,7 @@ import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
import carte.Carte;
|
||||
import carte.CarteEquipement;
|
||||
@ -14,7 +15,6 @@ import carte.CarteLieuMultiple;
|
||||
import carte.CarteLieuType;
|
||||
import carte.CartePiochable;
|
||||
import database.RessourceLoader;
|
||||
import effet.Effet;
|
||||
import effet.EffetChoisirCible;
|
||||
import effet.EffetChoisirEffet;
|
||||
import effet.EffetSelf;
|
||||
@ -23,6 +23,7 @@ import effet.action.ActionVoler;
|
||||
import ihm.controller.PlateauController;
|
||||
import personnage.Allie;
|
||||
import personnage.CartePersonnage;
|
||||
import personnage.CartePersonnage.Equipe;
|
||||
import personnage.Franklin;
|
||||
import personnage.Vampire;
|
||||
|
||||
@ -40,6 +41,7 @@ public class Plateau extends Thread{
|
||||
public static final String NB_MORTS_HUNTER = "nb_morts_hunter";
|
||||
public static final String NB_MORTS_SHADOW = "nb_morts_shadow";
|
||||
public static final String PARTIE_FINIE = "partie_finie";
|
||||
public static final String WIN_CHARLES = "victoire_charles";
|
||||
|
||||
private Map<String, Integer> stats;
|
||||
|
||||
@ -262,53 +264,44 @@ public class Plateau extends Thread{
|
||||
int nbJoueurs = this.joueurs.size();
|
||||
int i = 0;
|
||||
|
||||
while(true) {
|
||||
while(!isPartieTerminee()) {
|
||||
|
||||
System.out.println(joueurs.size());
|
||||
Joueur currentJoueur = this.joueurs.get(i % nbJoueurs);
|
||||
System.out.println("\n\n\n\n\n");
|
||||
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 ?");
|
||||
gj.afficherLieu(currentJoueur);
|
||||
Joueur currentJoueur = this.joueurs.get(i % nbJoueurs);
|
||||
|
||||
if(currentJoueur.choisir(Contexte.ACTIVER_EFFET_LIEU)) {
|
||||
System.out.println("Vous activez l'effet du lieu.");
|
||||
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(!currentJoueur.isDead()) {
|
||||
|
||||
deplacer(currentJoueur);
|
||||
if(isPartieTerminee()) break;
|
||||
}
|
||||
|
||||
System.out.println("\n");
|
||||
|
||||
System.out.println("Souhaitez vous attaquer quelqu'un ?");
|
||||
if(currentJoueur.choisir(Contexte.ATTAQUER)){
|
||||
if(currentJoueur.hasOpponents()) {
|
||||
List<Joueur> adjacents = currentJoueur.getJoueursRange();
|
||||
Joueur cible = (Joueur) currentJoueur.choisir(adjacents,Contexte.ATTAQUER);
|
||||
attaquer(currentJoueur,cible);
|
||||
gj.afficherLieu(currentJoueur);
|
||||
|
||||
if(currentJoueur.choisir(Contexte.ACTIVER_EFFET_LIEU)) {
|
||||
currentJoueur.utiliserEffetLieu();
|
||||
if(isPartieTerminee()) break;
|
||||
}else {
|
||||
System.out.println("Il n'y a personne a attaquer.");
|
||||
}
|
||||
|
||||
if(currentJoueur.choisir(Contexte.ATTAQUER)){
|
||||
if(currentJoueur.hasOpponents()) {
|
||||
List<Joueur> adjacents = currentJoueur.getJoueursRange();
|
||||
Joueur cible = (Joueur) currentJoueur.choisir(adjacents,Contexte.ATTAQUER);
|
||||
attaquer(currentJoueur,cible);
|
||||
if(isPartieTerminee()) break;
|
||||
}else {
|
||||
System.out.println("Il n'y a personne a attaquer.");
|
||||
}
|
||||
}
|
||||
i++;
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
List<Joueur> gagnants = new ArrayList<Joueur>();
|
||||
|
||||
System.out.println(this.stats);
|
||||
for(Joueur j : joueurs) {
|
||||
if(j.victoire()) {
|
||||
gagnants.add(j);
|
||||
System.out.println("CartePersonnage "+j.getCartePersonnage()+" Stats "+j.getStats());
|
||||
}
|
||||
}
|
||||
|
||||
// TODO Liste des gagnants
|
||||
// TODO Evaluate every winners
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isPartieTerminee() {
|
||||
@ -321,8 +314,8 @@ public class Plateau extends Thread{
|
||||
|
||||
while(!attributed) {
|
||||
int roll = sumRolls(currentJoueur);
|
||||
for(CarteLieu cl : lieux) {
|
||||
|
||||
|
||||
for(CarteLieu cl : lieux) {
|
||||
if(cl.coordinatesContains(roll) && currentJoueur.getCarteLieu() != cl){
|
||||
currentJoueur.deplacer(cl);
|
||||
attributed = true;
|
||||
@ -372,20 +365,23 @@ public class Plateau extends Thread{
|
||||
}
|
||||
|
||||
private int rollRandom(int nb) {
|
||||
|
||||
int roll = (int) Math.floor(Math.random() * (nb-1))+1;
|
||||
System.out.println("roll" + roll);
|
||||
Random r= new Random();
|
||||
int roll = r.nextInt(nb)+1;
|
||||
return roll;
|
||||
}
|
||||
|
||||
public int sumRolls(Joueur j)
|
||||
{
|
||||
int roll4 =rollRandom(4);
|
||||
int roll6 = rollRandom(6);
|
||||
int sum = Math.abs(roll4+roll6);
|
||||
int sum = 0;
|
||||
int roll4 = 0;
|
||||
int roll6 = 0;
|
||||
|
||||
roll4 = rollRandom(4);
|
||||
roll6 = rollRandom(6);
|
||||
sum = Math.abs(roll4+roll6);
|
||||
|
||||
gj.rollDice(j, PlateauController.DICE_BOTH, roll4,roll6);
|
||||
return sum;
|
||||
//return Math.abs(roll4+roll6);
|
||||
}
|
||||
|
||||
public List<Joueur> getJoueurs() {
|
||||
@ -402,7 +398,6 @@ public class Plateau extends Thread{
|
||||
{
|
||||
return this.stats.get(key);
|
||||
}else {
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -441,17 +436,31 @@ public class Plateau extends Thread{
|
||||
CarteLieu cl = joueur.getCarteLieu();
|
||||
|
||||
joueurs.addAll(cl.getJoueurs());
|
||||
joueurs.remove(joueur);
|
||||
joueurs.addAll(cl.getJoueursAdjacents());
|
||||
joueurs.remove(joueur);
|
||||
|
||||
removeDeads(joueurs);
|
||||
return (Joueur) gj.choisir(joueur, joueurs, Joueur.class);
|
||||
}
|
||||
|
||||
|
||||
private void removeDeads(List<Joueur> joueurs) {
|
||||
|
||||
List<Joueur> toRemove = new ArrayList<Joueur>();
|
||||
for(Joueur j : joueurs) {
|
||||
|
||||
if(j.isDead()) {
|
||||
toRemove.add(j);
|
||||
}
|
||||
}
|
||||
joueurs.removeAll(toRemove);
|
||||
}
|
||||
|
||||
public Joueur choisirParmisTous(Joueur joueur) {
|
||||
List<Joueur> joueurs = new ArrayList<Joueur>();
|
||||
joueurs.addAll(this.getJoueurs());
|
||||
joueurs.remove(joueur);
|
||||
removeDeads(joueurs);
|
||||
return (Joueur) gj.choisir(joueur, joueurs, Joueur.class);
|
||||
}
|
||||
|
||||
@ -481,4 +490,39 @@ public class Plateau extends Thread{
|
||||
public Joueur choisir(Joueur joueur, List<Joueur> adjacents, Contexte attaquer) {
|
||||
return gj.choisirJoueur(joueur, adjacents, attaquer);
|
||||
}
|
||||
|
||||
public void death(Joueur joueur) {
|
||||
|
||||
Equipe ej = joueur.getEquipe();
|
||||
|
||||
switch(ej) {
|
||||
case SHADOW:
|
||||
this.updateStat(NB_MORTS_SHADOW,1,true);
|
||||
break;
|
||||
case HUNTER:
|
||||
this.updateStat(NB_MORTS_HUNTER,1,true);
|
||||
break;
|
||||
case NEUTRE:
|
||||
this.updateStat(NB_MORTS_NEUTRAL,1,true);
|
||||
break;}
|
||||
|
||||
this.updateStat(NB_MORTS,1,true);
|
||||
|
||||
}
|
||||
|
||||
private void updateStat(String key , int value, boolean ajouter) {
|
||||
if(ajouter) {
|
||||
int valeurBase = this.getStat(key);
|
||||
this.setStat(key, valeurBase+value);
|
||||
}else {
|
||||
this.setStat(key, value);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public void victoire(Joueur joueur) {
|
||||
if(joueur.victoire()) {
|
||||
this.updateStat(PARTIE_FINIE, 1, false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package personnage;
|
||||
|
||||
import carte.CarteCondition;
|
||||
import condition.Condition;
|
||||
import main.Joueur;
|
||||
|
||||
public abstract class CartePersonnage extends CarteCondition {
|
||||
@ -19,7 +20,6 @@ public abstract class CartePersonnage extends CarteCondition {
|
||||
super(nom, description);
|
||||
this.pv = pv;
|
||||
this.joueur = joueur;
|
||||
|
||||
}
|
||||
|
||||
public abstract void utiliser();
|
||||
|
@ -1,9 +1,12 @@
|
||||
package personnage;
|
||||
|
||||
import condition.Condition;
|
||||
import condition.ConditionStatistiques;
|
||||
import effet.Effet;
|
||||
import effet.EffetSelf;
|
||||
import effet.action.Action;
|
||||
import effet.action.ActionAltererStatistiquesJoueur;
|
||||
import main.Contexte;
|
||||
import main.Joueur;
|
||||
import main.Plateau;
|
||||
|
||||
@ -15,7 +18,10 @@ public class Charles extends CartePersonnage{
|
||||
Action action = new ActionAltererStatistiquesJoueur("HP",-2,true);
|
||||
Effet effet = new EffetSelf(action);
|
||||
this.setEffet(effet);
|
||||
|
||||
|
||||
Condition winCondition = new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.WIN_CHARLES, 1, ConditionStatistiques.EQUAL);
|
||||
this.setCondition(winCondition);
|
||||
|
||||
}
|
||||
|
||||
public Charles() {
|
||||
@ -24,6 +30,9 @@ public class Charles extends CartePersonnage{
|
||||
Action action = new ActionAltererStatistiquesJoueur("HP",-2,true);
|
||||
Effet effet = new EffetSelf(action);
|
||||
this.setEffet(effet);
|
||||
|
||||
Condition winCondition = new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.WIN_CHARLES, 1, ConditionStatistiques.EQUAL);
|
||||
this.setCondition(winCondition);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -32,20 +41,22 @@ public class Charles extends CartePersonnage{
|
||||
Joueur joueur = this.getJoueur();
|
||||
super.attaquer(j, blessure);
|
||||
|
||||
if(joueur.getStat(Joueur.PLAYER_HP) > 2 && joueur.getRevele()){
|
||||
if(joueur.getStat(Joueur.PLAYER_HP) > 2 && joueur.getRevele()
|
||||
&& joueur.choisir(Contexte.EFFET_CHARLES)){
|
||||
|
||||
Plateau p = j.getPlateau();
|
||||
utiliser(joueur);
|
||||
p.attaquer(this.getJoueur(), j);
|
||||
}
|
||||
}
|
||||
|
||||
Plateau p = j.getPlateau();
|
||||
if(j.isDead() && (p.getStat(Plateau.NB_MORTS) >= 3)) {
|
||||
p.setStat(Plateau.WIN_CHARLES, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void utiliser() {
|
||||
|
||||
/*
|
||||
System.out.println("vie avant : " + this.getJoueur().getCartePersonnage().getPv());
|
||||
this.getJoueur().setStat("HP", this.getJoueur().getStat("HP") - 2);
|
||||
System.out.println("vie apres : " + this.getJoueur().getCartePersonnage().getPv());
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,4 @@
|
||||
|
||||
package personnage;
|
||||
|
||||
import condition.WinConditionHunter;
|
||||
|
Loading…
x
Reference in New Issue
Block a user