c'est le bordel

This commit is contained in:
Chiara 2020-04-22 17:00:26 +02:00
commit c55a49502c
60 changed files with 786 additions and 293 deletions

View File

@ -12,8 +12,15 @@ public abstract class CarteCondition extends CarteEffet{
private Condition condition; private Condition condition;
/*
* @param j le joueur utilisant son effet
*/
@Override
public void utiliser(Joueur j) { public void utiliser(Joueur j) {
super.utiliser(j); if(this.condition.isTrue(j)) {
super.utiliser(j);
}
} }
public Condition getCondition() { public Condition getCondition() {
@ -23,6 +30,4 @@ public abstract class CarteCondition extends CarteEffet{
public void setCondition(Condition condition) { public void setCondition(Condition condition) {
this.condition = condition; this.condition = condition;
} }
} }

View File

@ -5,19 +5,18 @@ import effet.Effet;
public abstract class CarteEffet extends Carte{ public abstract class CarteEffet extends Carte{
private Effet effet;
public CarteEffet(String nom, String description) { public CarteEffet(String nom, String description) {
super(nom, description); super(nom, description);
} }
private Effet effet;
/* /*
* @param j Appel la méthode utiliser de effet sur le joueur j * @param j Appel la méthode utiliser de effet sur le joueur j
*/ */
public void utiliser(Joueur j) { public void utiliser(Joueur j) {
effet.utiliser(j); this.effet.utiliser(j);
} }
public void setEffet(Effet e) { public void setEffet(Effet e) {

View File

@ -9,8 +9,6 @@ import main.Joueur;
public class CarteLieu extends CarteEffet{ public class CarteLieu extends CarteEffet{
private List<Joueur> listeJoueurs; private List<Joueur> listeJoueurs;
private Point coordinates; private Point coordinates;
private CarteLieu voisin; private CarteLieu voisin;
@ -21,6 +19,9 @@ public class CarteLieu extends CarteEffet{
this.listeJoueurs = new ArrayList<Joueur>(); this.listeJoueurs = new ArrayList<Joueur>();
} }
/*
* @param j Appel la méthode utiliser de effet sur le joueur j
*/
public void utiliser(Joueur j) { public void utiliser(Joueur j) {
this.getEffet().utiliser(j); this.getEffet().utiliser(j);

View File

@ -16,6 +16,9 @@ public class CarteLieuType<T extends Type> extends CarteLieu{
this.pioche = pioche; this.pioche = pioche;
} }
/*
* @param j Appel la méthode utiliser de effet sur le joueur j
*/
public void utiliser(Joueur j) { public void utiliser(Joueur j) {
CartePiochable<?> carte = pioche.piocher(); CartePiochable<?> carte = pioche.piocher();

View File

@ -11,6 +11,9 @@ public class CartePiochable<T extends Type> extends CarteCondition{
// TODO Auto-generated constructor stub // TODO Auto-generated constructor stub
} }
/*
* @param j Appel la méthode utiliser de effet sur le joueur j
*/
public void utiliser(Joueur j) { public void utiliser(Joueur j) {
super.utiliser(j); super.utiliser(j);
} }

View File

@ -4,7 +4,7 @@ import main.Joueur;
import main.Type; import main.Type;
public class Equipement extends CartePiochable<Type>{ public abstract class Equipement extends CartePiochable<Type>{
public Equipement(String nom, String description) { public Equipement(String nom, String description) {
@ -13,6 +13,11 @@ public class Equipement extends CartePiochable<Type>{
} }
public void utiliser(Joueur j) { public void utiliser(Joueur j) {
if(!j.getEquipements().contains(this)) {
j.ajouterEquipement(this);
}
super.utiliser(j);
} }
public abstract void reverse(Joueur j);
} }

View File

@ -0,0 +1,17 @@
package carte;
import effet.action.ActionAltererStatistiquesJoueur;
import main.Joueur;
public class EquipementStat extends Equipement{
public EquipementStat(String nom, String description) {
super(nom, description);
}
@Override
public void reverse(Joueur j) {
ActionAltererStatistiquesJoueur action = ((ActionAltererStatistiquesJoueur) this.getEffet().getAction()).getReverseAction();
action.affecte(j, j);
}
}

View File

@ -2,7 +2,8 @@ package condition;
import main.Joueur; import main.Joueur;
public abstract class Condition { public class Condition {
public boolean isTrue(Joueur joueur) {
public abstract boolean isTrue(Joueur joueur); return true;
}
} }

View File

@ -12,7 +12,7 @@ public class EffetChoisirCible extends Effet{
@Override @Override
public void utiliser(Joueur joueur) { public void utiliser(Joueur joueur) {
Joueur j2 = joueur.choisirTous(); Joueur j2 = joueur.choisiParmisTous();
Action action = this.getAction(); Action action = this.getAction();
action.affecte(joueur, j2); action.affecte(joueur, j2);

View File

@ -2,13 +2,10 @@ package effet.action;
import main.Joueur; import main.Joueur;
public class ActionAltererStatistiquesJoueur extends Action{ public class ActionAltererStatistiquesJoueur extends Action{
private String key; private String key;
private int valeur; private int valeur;
private boolean ajouter; private boolean ajouter;
/** /**
* Constructeur ActionAltererStatistiquesJoueur * Constructeur ActionAltererStatistiquesJoueur
* @param key Le clé qui correspond à la valeur à modifier * @param key Le clé qui correspond à la valeur à modifier
@ -24,8 +21,8 @@ public class ActionAltererStatistiquesJoueur extends Action{
* ActionAltererStatistiquesJoueur("PV", 2, false) * ActionAltererStatistiquesJoueur("PV", 2, false)
* <br> * <br>
* Change les PV's du joueur à 2 * Change les PV's du joueur à 2
*
*/ */
public ActionAltererStatistiquesJoueur(String key, int valeur, boolean ajouter) public ActionAltererStatistiquesJoueur(String key, int valeur, boolean ajouter)
{ {
this.key = key; this.key = key;
@ -33,7 +30,6 @@ public class ActionAltererStatistiquesJoueur extends Action{
this.ajouter = ajouter; this.ajouter = ajouter;
} }
/** /**
* Lance l'action de modification de statistiques * Lance l'action de modification de statistiques
* @param j1 Le joueur qui modifie * @param j1 Le joueur qui modifie
@ -44,12 +40,13 @@ public class ActionAltererStatistiquesJoueur extends Action{
{ {
if(ajouter) if(ajouter)
{ {
j2.setStat(key, j2.getStat(key)+valeur); j2.addToStat(key, valeur);
}else { }else {
j2.setStat(key, valeur); j2.setStat(key, valeur);
} }
} }
public ActionAltererStatistiquesJoueur getReverseAction() {
return new ActionAltererStatistiquesJoueur(key, -valeur, true);
}
} }

View File

@ -1,6 +1,8 @@
package effet.action; package effet.action;
import main.Equipement; import java.util.List;
import carte.Equipement;
import main.Joueur; import main.Joueur;
public class ActionVoler extends Action{ public class ActionVoler extends Action{
@ -15,7 +17,7 @@ public class ActionVoler extends Action{
@Override @Override
public void affecte(Joueur j1, Joueur j2) { public void affecte(Joueur j1, Joueur j2) {
Equipement[] equipements = j2.getEquipements(); List<Equipement> equipements = j2.getEquipements();
// J1 choisit quel équipement voler // J1 choisit quel équipement voler
Equipement equipement = j1.choisir(equipements); Equipement equipement = j1.choisir(equipements);

View File

@ -10,7 +10,7 @@ import javafx.stage.Stage;
public class Main extends Application{ public class Main extends Application{
@Override @Override
public void start(Stage primaryStage) throws Exception{ public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("ressources/Menu.fxml")); Parent root = FXMLLoader.load(getClass().getResource("ressources/jouerSonTour6.fxml"));
primaryStage.setTitle("Shadow Hunters"); primaryStage.setTitle("Shadow Hunters");
primaryStage.setScene(new Scene(root)); primaryStage.setScene(new Scene(root));
primaryStage.show(); primaryStage.show();

View File

@ -0,0 +1,26 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
public class JouerSonTour1Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
}
@FXML
public void lancerDes(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouerSonTour2.fxml"));
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,37 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
public class JouerSonTour2Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void ignorerEtape(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouerSonTour3.fxml"));
rootPane.getChildren().setAll(pane);
}
@FXML
public void capaciteLieu(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouerSonTour5.fxml"));
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,35 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class JouerSonTour3Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
System.out.println("nulle");
}
@FXML
public void choixJoueur(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouerSonTour4.fxml"));
rootPane.getChildren().setAll(pane);
}
@FXML
public void equipementVole(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouerSonTour5.fxml"));
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,19 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.Pane;
public class JouerSonTour4Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,29 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class JouerSonTour5Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void equipementVole(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouerSonTour6.fxml"));
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,35 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class JouerSonTour6Controller implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void piocherVision(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouer_Son_Tour_piocher_vision.fxml"));
rootPane.getChildren().setAll(pane);
}
@FXML
public void piocherTenebre(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouer_Son_Tour_piocher_lum_et_ten.fxml"));
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,29 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class JouerSonTourDonnerVisionController implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void attaquer(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouer_Son_Tour_recevoir_blessure.fxml"));
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,19 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.Pane;
public class PiocherLumiereTenebreController implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
}

View File

@ -0,0 +1,28 @@
package ihm.controller;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.input.MouseEvent;
import javafx.scene.layout.Pane;
public class PiocherVisionController implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
@FXML
public void voirCarte(MouseEvent mouseEvent) throws IOException{
Pane pane = FXMLLoader.load(getClass().getResource("../ressources/jouer_Son_Tour_donner_vision.fxml"));
rootPane.getChildren().setAll(pane);
}
}

View File

@ -0,0 +1,19 @@
package ihm.controller;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.layout.Pane;
public class RecevoirBlessureController implements Initializable{
@FXML private Pane rootPane;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
// TODO Auto-generated method stub
}
}

View File

@ -8,8 +8,7 @@
<?import javafx.scene.shape.Rectangle?> <?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTourDonnerVisionController">
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<VBox prefHeight="400.0" prefWidth="600.0"> <VBox prefHeight="400.0" prefWidth="600.0">
<children> <children>
@ -17,7 +16,7 @@
<children> <children>
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0"> <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0">
<children> <children>
<Button mnemonicParsing="false" text="Joueur 1" /> <Button mnemonicParsing="false" onMouseClicked="#attaquer" text="Joueur 1" />
</children> </children>
</HBox> </HBox>
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0"> <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0">

View File

@ -7,8 +7,7 @@
<?import javafx.scene.shape.Rectangle?> <?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.PiocherLumiereTenebreController">
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<VBox prefHeight="400.0" prefWidth="600.0"> <VBox prefHeight="400.0" prefWidth="600.0">
<children> <children>

View File

@ -8,7 +8,7 @@
<?import javafx.scene.shape.Rectangle?> <?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.PiocherVisionController">
<children> <children>
<VBox prefHeight="400.0" prefWidth="600.0"> <VBox prefHeight="400.0" prefWidth="600.0">
<children> <children>
@ -37,7 +37,7 @@
</HBox> </HBox>
<HBox alignment="CENTER" prefHeight="69.0" prefWidth="600.0"> <HBox alignment="CENTER" prefHeight="69.0" prefWidth="600.0">
<children> <children>
<Button mnemonicParsing="false" text="Voir carte" /> <Button mnemonicParsing="false" onMouseClicked="#voirCarte" text="Voir carte" />
</children> </children>
</HBox> </HBox>
</children> </children>

View File

@ -5,8 +5,7 @@
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.RecevoirBlessureController">
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<HBox alignment="CENTER" layoutY="1.0" prefHeight="400.0" prefWidth="600.0"> <HBox alignment="CENTER" layoutY="1.0" prefHeight="400.0" prefWidth="600.0">
<children> <children>

View File

@ -7,7 +7,7 @@
<?import javafx.scene.shape.Rectangle?> <?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="589.0" prefWidth="881.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="589.0" prefWidth="881.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour1Controller">
<children> <children>
<Label layoutX="265.0" layoutY="29.0" text="C'est au tour du "> <Label layoutX="265.0" layoutY="29.0" text="C'est au tour du ">
<font> <font>
@ -16,7 +16,7 @@
</Label> </Label>
<Rectangle arcHeight="5.0" arcWidth="5.0" fill="DODGERBLUE" height="200.0" layoutX="221.0" layoutY="135.0" stroke="BLACK" strokeType="INSIDE" width="200.0" /> <Rectangle arcHeight="5.0" arcWidth="5.0" fill="DODGERBLUE" height="200.0" layoutX="221.0" layoutY="135.0" stroke="BLACK" strokeType="INSIDE" width="200.0" />
<Polygon fill="DODGERBLUE" layoutX="551.0" layoutY="216.0" points="-75.79998779296875, 98.80001831054688, 97.0, 98.80001831054688, 8.20001220703125, -59.199981689453125" stroke="BLACK" strokeType="INSIDE" /> <Polygon fill="DODGERBLUE" layoutX="551.0" layoutY="216.0" points="-75.79998779296875, 98.80001831054688, 97.0, 98.80001831054688, 8.20001220703125, -59.199981689453125" stroke="BLACK" strokeType="INSIDE" />
<Button layoutX="401.0" layoutY="394.0" mnemonicParsing="false" text="Lancer les dés" /> <Button layoutX="401.0" layoutY="394.0" mnemonicParsing="false" onMouseClicked="#lancerDes" text="Lancer les dés" />
<Label layoutX="275.0" layoutY="222.0" text="Score dés 1"> <Label layoutX="275.0" layoutY="222.0" text="Score dés 1">
<font> <font>
<Font size="18.0" /> <Font size="18.0" />

View File

@ -6,8 +6,7 @@
<?import javafx.scene.shape.Rectangle?> <?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="534.0" prefWidth="714.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour2Controller">
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="534.0" prefWidth="714.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<Label layoutX="355.0" layoutY="172.0" text="Description capacité de la carte lieux "> <Label layoutX="355.0" layoutY="172.0" text="Description capacité de la carte lieux ">
<font> <font>
@ -15,8 +14,8 @@
</font> </font>
</Label> </Label>
<Rectangle arcHeight="5.0" arcWidth="5.0" fill="DODGERBLUE" height="268.0" layoutX="96.0" layoutY="147.0" stroke="BLACK" strokeType="INSIDE" width="200.0" /> <Rectangle arcHeight="5.0" arcWidth="5.0" fill="DODGERBLUE" height="268.0" layoutX="96.0" layoutY="147.0" stroke="BLACK" strokeType="INSIDE" width="200.0" />
<Button layoutX="348.0" layoutY="242.0" mnemonicParsing="false" text="Utiliser la capacité du lieux" /> <Button layoutX="348.0" layoutY="242.0" mnemonicParsing="false" onMouseClicked="#capaciteLieu" text="Utiliser la capacité du lieux" />
<Button layoutX="542.0" layoutY="242.0" mnemonicParsing="false" text="Sauter cette étape" /> <Button layoutX="542.0" layoutY="242.0" mnemonicParsing="false" onMouseClicked="#ignorerEtape" text="Sauter cette étape" />
<Label layoutX="168.0" layoutY="273.0" text="Carte lieux" /> <Label layoutX="168.0" layoutY="273.0" text="Carte lieux" />
</children> </children>
</Pane> </Pane>

View File

@ -6,12 +6,11 @@
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="451.0" prefWidth="654.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour3Controller">
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="451.0" prefWidth="654.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<HBox alignment="CENTER" prefHeight="100.0" prefWidth="661.0" spacing="60.0"> <HBox alignment="CENTER" prefHeight="100.0" prefWidth="661.0" spacing="60.0">
<children> <children>
<Button mnemonicParsing="false" text="Joueur 1" /> <Button mnemonicParsing="false" onMouseClicked="#choixJoueur" text="Joueur 1" />
<Button mnemonicParsing="false" text="Joueur 2" /> <Button mnemonicParsing="false" text="Joueur 2" />
<Button mnemonicParsing="false" text="Joueur 3" /> <Button mnemonicParsing="false" text="Joueur 3" />
<Button mnemonicParsing="false" text="Joueur 4" /> <Button mnemonicParsing="false" text="Joueur 4" />

View File

@ -7,7 +7,7 @@
<?import javafx.scene.shape.Rectangle?> <?import javafx.scene.shape.Rectangle?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="589.0" prefWidth="881.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1"> <Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="589.0" prefWidth="881.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour4Controller">
<children> <children>
<Label layoutX="401.0" layoutY="29.0" text="attaque"> <Label layoutX="401.0" layoutY="29.0" text="attaque">
<font> <font>

View File

@ -6,8 +6,7 @@
<?import javafx.scene.layout.Pane?> <?import javafx.scene.layout.Pane?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour5Controller">
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<HBox layoutX="11.0" layoutY="14.0" prefHeight="60.0" prefWidth="345.0" spacing="30.0"> <HBox layoutX="11.0" layoutY="14.0" prefHeight="60.0" prefWidth="345.0" spacing="30.0">
<children> <children>

View File

@ -7,8 +7,7 @@
<?import javafx.scene.layout.VBox?> <?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?> <?import javafx.scene.text.Font?>
<Pane fx:id="rootPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="419.0" prefWidth="614.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.JouerSonTour6Controller">
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="419.0" prefWidth="614.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1">
<children> <children>
<HBox alignment="CENTER" layoutX="97.0" layoutY="49.0" prefHeight="340.0" prefWidth="489.0" spacing="60.0"> <HBox alignment="CENTER" layoutX="97.0" layoutY="49.0" prefHeight="340.0" prefWidth="489.0" spacing="60.0">
<children> <children>
@ -19,9 +18,9 @@
</Label> </Label>
<VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="60.0"> <VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" spacing="60.0">
<children> <children>
<Button mnemonicParsing="false" text="Carte vision" /> <Button mnemonicParsing="false" onMouseClicked="#piocherVision" text="Carte vision" />
<Button mnemonicParsing="false" text="Carte ténébre" /> <Button mnemonicParsing="false" onMouseClicked="#piocherTenebre" text="Carte ténébre" />
<Button mnemonicParsing="false" text="Carte lumière" /> <Button mnemonicParsing="false" onMouseClicked="#piocherTenebre" text="Carte lumière" />
</children> </children>
</VBox> </VBox>
</children> </children>

View File

@ -147,7 +147,7 @@ public class ControleurIA {
// bob : si attaque joueur possedant equipement 70?% devoilement // bob : si attaque joueur possedant equipement 70?% devoilement
public boolean devoilerIABob(JoueurVirtuel jIA, Joueur jAttaquee) { public boolean devoilerIABob(JoueurVirtuel jIA, Joueur jAttaquee) {
if (jAttaquee.getNbEquipments() > 0 && getRandomPercentage() < 70) if (jAttaquee.getStat(Joueur.PLAYER_NB_EQUIPEMENTS) > 0 && getRandomPercentage() < 70)
return true; return true;
return false; return false;
} }

View File

@ -1,5 +0,0 @@
package main;
public class Effet {
}

View File

@ -1,5 +0,0 @@
package main;
public class Equipement {
}

View File

@ -1,51 +1,36 @@
package main; package main;
import java.util.HashMap; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Map;
import condition.Condition; import carte.Equipement;
public class GestionnaireEquipements { public class GestionnaireEquipements {
// String est le nom de l'equip, et Equip c'est l'objet, on suppose ici qu'il ne
// peut pas y avoir de doublon d'equipement
private Map<String, Equipement> equipements = new HashMap<>();
public int getNbEquipments() { private Joueur j;
return equipements.size(); private List<Equipement> equipements;
public GestionnaireEquipements(Joueur j) {
this.j = j;
this.equipements = new ArrayList<Equipement>();
} }
// precondition : verifier que le gestionnaire contient l'equipement avec public void ajouter(Equipement e) {
// containsEquipement this.equipements.add(e);
public Equipement getEquipement(String key) { e.utiliser(this.j);
return equipements.get(key); this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, 1);
} }
public boolean containsEquipement(String key) { public void retirer(Equipement e) {
return equipements.containsKey(key); if(this.equipements.contains(e)) {
e.reverse(j);
this.equipements.remove(e);
this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, -1);
}
} }
public void addEquipement(String s, Equipement e) { public List<Equipement> getEquipements() {
equipements.put(s, e); return equipements;
}
// ex : si le joueur se fait voler un equipement, on l'enleve de la liste
// d'equipements
public Equipement removeEquipement(String key) {
return equipements.remove(key);
}
// methode qui renvoit une liste des effets des equipements du joueur qui
// s'activeront dans une certaine phase de la partie par rapport a la condition
// en parametre
public List<Effet> getEffets(Condition c) {
// TODO
return null;
}
// pour methode choisir de joueur
public Equipement[] getArrayEquipements() {
return (Equipement[]) equipements.values().toArray();
} }
} }

View File

@ -1,7 +1,12 @@
package main; package main;
import java.util.List;
import effet.Effet;
public class GestionnaireJeu { public class GestionnaireJeu {
private Plateau plateau; private Plateau plateau;
private View view;
public GestionnaireJeu (Plateau p) { public GestionnaireJeu (Plateau p) {
plateau = p; plateau = p;
@ -24,4 +29,27 @@ public class GestionnaireJeu {
return null; return null;
} }
public Joueur choisirParmisTous(Joueur joueur, List<Joueur> joueurs) {
return joueur;
// TODO Auto-generated method stub
}
public Effet choisirEffet(Joueur joueur, Effet[] effets) {
// TODO Auto-generated method stub
return null;
}
public Joueur choisirAdjacents(Joueur joueur, List<Joueur> joueurs) {
// TODO Auto-generated method stub
return null;
}
public boolean choisir(Joueur joueur) {
// TODO Auto-generated method stub
return false;
}
} }

View File

@ -4,6 +4,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import carte.CarteLieu; import carte.CarteLieu;
import carte.Equipement;
import carte.EquipementStat;
import effet.Effet; import effet.Effet;
import personnage.CartePersonnage; import personnage.CartePersonnage;
@ -39,7 +41,7 @@ public class Joueur {
public Joueur(String nom) { public Joueur(String nom) {
this.nom = nom; this.nom = nom;
this.revele = false; this.revele = false;
this.gestionnaireEquipements = new GestionnaireEquipements(this);
stats = new HashMap<>(); stats = new HashMap<>();
@ -48,7 +50,8 @@ public class Joueur {
//stats.put(PLAYER_HP, char.getHP()); //stats.put(PLAYER_HP, char.getHP());
//stats.put(PLAYER_TURN, 1); //stats.put(PLAYER_TURN, 1);
//stats.put(PLAYER_DAMAGE, 0); - dégats en + stats.put(PLAYER_DAMAGE, 0);
stats.put(PLAYER_NB_EQUIPEMENTS, 0);
//stats.put(PLAYER_RESISTANCE, 0); //stats.put(PLAYER_RESISTANCE, 0);
//stats.put(PLAYER_REVEAL, 0); //stats.put(PLAYER_REVEAL, 0);
//stats.put(PLAYER_IMMUNITY, 0); //stats.put(PLAYER_IMMUNITY, 0);
@ -71,15 +74,12 @@ public class Joueur {
if(stats.containsKey(key)) { if(stats.containsKey(key)) {
return stats.get(key); return stats.get(key);
}else { }else {
return -1; return -1;
} }
} }
public int getNbEquipments() {
return gestionnaireEquipements.getNbEquipments();
}
public List<Joueur> getJoueursAdjacents() { public List<Joueur> getJoueursAdjacents() {
List<Joueur> joueurs = this.carteLieu.getJoueursAdjacents(); List<Joueur> joueurs = this.carteLieu.getJoueursAdjacents();
@ -87,17 +87,16 @@ public class Joueur {
return joueurs; return joueurs;
} }
public Equipement[] getEquipements() { public List<Equipement> getEquipements() {
// TODO Auto-generated method stub return this.gestionnaireEquipements.getEquipements();
return null;
} }
public void voler(Joueur j2, Equipement equipement) { public void voler(Joueur j2, Equipement equipement) {
// TODO Auto-generated method stub
} j2.gestionnaireEquipements.retirer(equipement);
this.gestionnaireEquipements.ajouter(equipement); }
public Equipement choisir(Equipement[] equipements) { public Equipement choisir(List<Equipement> equipements) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
@ -108,7 +107,6 @@ public class Joueur {
if(blessure > 0) if(blessure > 0)
{ {
j2.addToStat(PLAYER_HP, -blessure);
this.cartePersonnage.attaquer(j2, blessure); this.cartePersonnage.attaquer(j2, blessure);
} }
} }
@ -128,7 +126,7 @@ public class Joueur {
public void addToStat(String key, int valeur) public void addToStat(String key, int valeur)
{ {
int valeurBase = this.getStat(key); int valeurBase = this.getStat(key);
this.setStat(Joueur.PLAYER_HP,valeurBase+valeur); this.setStat(key,valeurBase+valeur);
} }
@ -136,14 +134,20 @@ public class Joueur {
return this.plateau; return this.plateau;
} }
public boolean choisir() {
return this.plateau.choisir(this);
}
public Joueur choisirAdjacents() { public Joueur choisirAdjacents() {
// TODO Auto-generated method stub return this.plateau.choisirAdjacents(this);
return null;
} }
public Effet choisir(Effet[] effets) { public Effet choisir(Effet[] effets) {
// TODO Auto-generated method stub return this.plateau.choisirEffet(this,effets);
return null; }
public Joueur choisiParmisTous() {
return this.plateau.choisirParmisTous(this);
} }
public boolean getRevele() { public boolean getRevele() {
@ -167,10 +171,7 @@ public class Joueur {
this.plateau = plateau2; this.plateau = plateau2;
} }
public boolean choisir() {
// TODO Auto-generated method stub
return false;
}
public void utiliserEffetLieu() { public void utiliserEffetLieu() {
this.carteLieu.utiliser(this); this.carteLieu.utiliser(this);
@ -186,10 +187,7 @@ public class Joueur {
} }
public Joueur choisirTous() {
// TODO Auto-generated method stub
return null;
}
public CarteLieu getCarteLieu() { public CarteLieu getCarteLieu() {
return this.carteLieu; return this.carteLieu;
@ -198,4 +196,20 @@ public class Joueur {
public String getNom() { public String getNom() {
return this.nom; return this.nom;
} }
public void reveal() {
this.revele = true;
}
public void setRevele(boolean b) {
this.revele = b;
}
public void ajouterEquipement(Equipement equipement) {
this.gestionnaireEquipements.ajouter(equipement);
}
public void retirerEquipement(Equipement equipement) {
this.gestionnaireEquipements.retirer(equipement);
}
} }

View File

@ -1,6 +1,7 @@
package main; package main;
import java.util.List; import java.util.List;
import carte.Equipement;
import effet.Effet; import effet.Effet;

View File

@ -23,7 +23,6 @@ public class Pioche<T extends Type> {
} }
public CartePiochable<?> piocher() { public CartePiochable<?> piocher() {
return cartesPiochables.pop(); return cartesPiochables.pop();
} }
} }

View File

@ -7,9 +7,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import carte.CarteLieu; import carte.CarteLieu;
import effet.Effet;
public class Plateau { public class Plateau {
private GestionnaireJeu gj;
private List<Joueur> joueurs; private List<Joueur> joueurs;
private List<CarteLieu> lieux; private List<CarteLieu> lieux;
@ -27,6 +29,9 @@ public class Plateau {
public Plateau(List<Joueur> joueurs) { public Plateau(List<Joueur> joueurs) {
joueurs.forEach(x -> x.setPlateau(this));
this.joueurs = joueurs; this.joueurs = joueurs;
this.lieux = new ArrayList<>(); this.lieux = new ArrayList<>();
@ -159,7 +164,6 @@ public class Plateau {
}else { }else {
//TODO Throw exception
} }
} }
@ -167,4 +171,30 @@ public class Plateau {
this.lieux = lieux; this.lieux = lieux;
shuffleLieux(); shuffleLieux();
} }
public boolean choisir(Joueur joueur) {
return gj.choisir(joueur);
}
public Joueur choisirAdjacents(Joueur joueur) {
List<Joueur> joueurs = new ArrayList<Joueur>();
CarteLieu cl = joueur.getCarteLieu();
joueurs.addAll(cl.getJoueurs());
joueurs.remove(joueur);
joueurs.addAll(cl.getJoueursAdjacents());
return gj.choisirAdjacents(joueur, joueurs);
}
public Effet choisirEffet(Joueur joueur, Effet[] effets) {
return gj.choisirEffet(joueur,effets);
}
public Joueur choisirParmisTous(Joueur joueur) {
List<Joueur> joueurs = this.getJoueurs();
return gj.choisirParmisTous(joueur,joueurs);
}
} }

5
src/main/View.java Normal file
View File

@ -0,0 +1,5 @@
package main;
public class View {
}

View File

@ -18,14 +18,14 @@ public class Allie extends Unique{
public Allie(Joueur joueur) { public Allie(Joueur joueur) {
super("ALLIE","desc", 8, joueur); super("ALLIE","desc", 8, joueur);
Action action = new ActionAltererStatistiquesJoueur("HP",this.getPv(),false); Action action = new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,this.getPv(),false);
Effet effet = new EffetSelf(action); Effet effet = new EffetSelf(action);
this.setEffet(effet); this.setEffet(effet);
List<Condition> conditions = new ArrayList<Condition>(); List<Condition> conditions = new ArrayList<Condition>();
conditions.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL)); conditions.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.PARTIE_FINIE, 1, ConditionStatistiques.EQUAL));
conditions.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.MORE)); conditions.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.LESS));
Condition winCondition = new ConditionMultiple(conditions); Condition winCondition = new ConditionMultiple(conditions);
@ -40,16 +40,9 @@ public class Allie extends Unique{
*/ */
public void utiliser() { public void utiliser() {
if(!this.isCapaciteUsed()) { if(this.getJoueur().getRevele() && !this.isCapaciteUsed()) {
this.getEffet().utiliser(this.getJoueur()); this.getEffet().utiliser(this.getJoueur());
this.setCapaciteUsed(true); this.setCapaciteUsed(true);
} }
} }
@Override
public void attaquer(Joueur j, int blessure) {
}
} }

View File

@ -8,8 +8,8 @@ import main.Joueur;
public class Bob extends CartePersonnage{ public class Bob extends CartePersonnage{
public Bob(String nom, String desc ,int hp, Joueur joueur) throws Exception { public Bob(Joueur joueur){
super(nom,desc, hp, joueur); super("BOB","desc", 10, joueur);
Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE); Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE);
this.setCondition(condition); this.setCondition(condition);
@ -19,25 +19,24 @@ public class Bob extends CartePersonnage{
} }
@Override @Override
public void attaquer(Joueur j, int attaque) { public void attaquer(Joueur j, int blessure) {
if(attaque >= 2 && j.getRevele()) { if(blessure >= 2 && j.getRevele()) {
Joueur thisJoueur = this.getJoueur(); Joueur thisJoueur = this.getJoueur();
if(thisJoueur.choisir()) { if(thisJoueur.choisir()) {
((EffetTarget)this.getEffet()).setTarget(j); ((EffetTarget)this.getEffet()).setTarget(j);
utiliser(); this.utiliser(thisJoueur);
} }else {
super.attaquer(j, blessure);
} }
}
} }
@Override @Override
public void utiliser() { public void utiliser() {
Joueur j = this.getJoueur(); // TODO Auto-generated method stub
this.getEffet().utiliser(j);
} }
} }

View File

@ -12,11 +12,15 @@ public abstract class CartePersonnage extends CarteCondition {
super(nom, description); super(nom, description);
this.pv = pv; this.pv = pv;
this.joueur = joueur; this.joueur = joueur;
joueur.setCartePersonnage(this);
} }
public abstract void utiliser(); public abstract void utiliser();
public abstract void attaquer(Joueur j, int blessure);
public void attaquer(Joueur j, int blessure) {
j.addToStat(Joueur.PLAYER_HP, -blessure);
}
public boolean victoire(){ public boolean victoire(){
return this.getCondition().isTrue(this.joueur); return this.getCondition().isTrue(this.joueur);
@ -27,7 +31,7 @@ public abstract class CartePersonnage extends CarteCondition {
} }
public void setJoueur(Joueur j) { public void setJoueur(Joueur j) {
joueur=j; this.joueur=j;
} }
public void deplacer() { public void deplacer() {
@ -38,4 +42,6 @@ public abstract class CartePersonnage extends CarteCondition {
return pv; return pv;
} }
} }

View File

@ -18,19 +18,20 @@ public class Charles extends CartePersonnage{
} }
@Override
public void attaquer(Joueur j, int blessure) { public void attaquer(Joueur j, int blessure) {
if(this.getJoueur().getRevele()){ Joueur joueur = this.getJoueur();
super.attaquer(j, blessure);
if(joueur.getStat(Joueur.PLAYER_HP) > 2 && joueur.getRevele()){
// TODO Choisir effet
Plateau p = j.getPlateau(); Plateau p = j.getPlateau();
utiliser(); utiliser(joueur);
p.attaquer(this.getJoueur(), j); p.attaquer(this.getJoueur(), j);
} }
} }
@Override
public void utiliser() { public void utiliser() {
this.getEffet().utiliser(this.getJoueur());
} }
} }

View File

@ -26,21 +26,13 @@ public class Daniel extends CartePersonnage{
conditions.add(new ConditionMultiple(conditions2)); conditions.add(new ConditionMultiple(conditions2));
Condition winCondition = new ConditionMultipleOR(conditions); Condition winCondition = new ConditionMultipleOR(conditions);
this.setCondition(winCondition); this.setCondition(winCondition);
} }
@Override
public void utiliser() { public void utiliser() {
// TODO Listener mort this.getJoueur().reveal();
} }
@Override
public void attaquer(Joueur j, int blessure) {
// TODO Auto-generated method stub
}
} }

View File

@ -11,21 +11,12 @@ public class Emi extends CartePersonnage{
this.setCondition(new WinConditionHunter()); this.setCondition(new WinConditionHunter());
} }
//m<EFBFBD>thode
public void deplacer() { public void deplacer() {
} }
@Override
public void utiliser() { public void utiliser() {
// TODO Auto-generated method stub
} }
@Override
public void attaquer(Joueur j, int blessure) {
// TODO Auto-generated method stub
}
} }

View File

@ -6,7 +6,6 @@ import main.Plateau;
public class Franklin extends Unique{ public class Franklin extends Unique{
//constructeur
public Franklin(String nom, int hp, Joueur joueur) { public Franklin(String nom, int hp, Joueur joueur) {
super(nom, nom, hp, joueur); super(nom, nom, hp, joueur);
this.setCondition(new WinConditionHunter()); this.setCondition(new WinConditionHunter());
@ -18,17 +17,16 @@ public class Franklin extends Unique{
} }
@Override
public void utiliser() { public void utiliser() {
Joueur joueur = this.getJoueur(); Joueur joueur = this.getJoueur();
if(this.isCapaciteUsed() && joueur.getRevele()) { if(!this.isCapaciteUsed() && joueur.getRevele()) {
Plateau p = joueur.getPlateau(); Plateau p = joueur.getPlateau();
int roll = p.roll6(); int roll = p.roll6();
Joueur joueur2 = joueur.choisirTous(); Joueur joueur2 = joueur.choisiParmisTous();
joueur2.addToStat(Joueur.PLAYER_HP, -roll); super.attaquer(joueur2, roll);
} }
} }

View File

@ -11,23 +11,16 @@ public class Georges extends Unique{
this.setCondition(new WinConditionHunter()); this.setCondition(new WinConditionHunter());
} }
@Override
public void attaquer(Joueur j, int blessure) {
// TODO Auto-generated method stub
}
@Override
public void utiliser() { public void utiliser() {
Joueur joueur = this.getJoueur(); Joueur joueur = this.getJoueur();
if(this.isCapaciteUsed() && joueur.getRevele()) { if(!this.isCapaciteUsed() && joueur.getRevele()) {
Plateau p = joueur.getPlateau(); Plateau p = joueur.getPlateau();
int roll = p.roll4(); int roll = p.roll4();
Joueur joueur2 = joueur.choisirTous(); Joueur joueur2 = joueur.choisiParmisTous();
joueur2.addToStat(Joueur.PLAYER_HP, -roll); super.attaquer(joueur2, roll);
} }
} }

View File

@ -4,27 +4,14 @@ import condition.WinConditionShadow;
import main.Joueur; import main.Joueur;
public class LoupGarou extends CartePersonnage { public class LoupGarou extends CartePersonnage {
//constructeur
public LoupGarou(String nom, String desc ,int hp, Joueur joueur) { public LoupGarou(String nom, String desc ,int hp, Joueur joueur) {
super(nom,desc, hp, joueur); super(nom,desc, hp, joueur);
this.setCondition(new WinConditionShadow()); this.setCondition(new WinConditionShadow());
} }
//m<EFBFBD>thodes
public void contreAttaquer(Joueur j) {
}
@Override
public void utiliser() { public void utiliser() {
// TODO Auto-generated method stub
} }
@Override
public void attaquer(Joueur j, int blessure) {
// TODO Auto-generated method stub
}
} }

View File

@ -10,16 +10,6 @@ public class Metamorphe extends CartePersonnage{
this.setCondition(new WinConditionShadow()); this.setCondition(new WinConditionShadow());
} }
@Override
public void utiliser() { public void utiliser() {
// TODO Auto-generated method stub
} }
@Override
public void attaquer(Joueur j, int blessure) {
// TODO Auto-generated method stub
}
} }

View File

@ -8,11 +8,9 @@ public abstract class Unique extends CartePersonnage{
public Unique(String nom, String desc ,int hp, Joueur joueur) { public Unique(String nom, String desc ,int hp, Joueur joueur) {
super(nom,desc, hp, joueur); super(nom,desc, hp, joueur);
this.capaciteUsed = false;
} }
public boolean isCapaciteUsed() { public boolean isCapaciteUsed() {
return capaciteUsed; return capaciteUsed;
} }
@ -20,11 +18,4 @@ public abstract class Unique extends CartePersonnage{
public void setCapaciteUsed(boolean capaciteUsed) { public void setCapaciteUsed(boolean capaciteUsed) {
this.capaciteUsed = capaciteUsed; this.capaciteUsed = capaciteUsed;
} }
@Override
public void utiliser() {
// TODO Auto-generated method stub
}
} }

View File

@ -1,43 +1,29 @@
package personnage; package personnage;
import condition.WinConditionShadow; import condition.Condition;
import effet.Effet;
import effet.EffetSelf;
import effet.action.Action;
import effet.action.ActionAltererStatistiquesJoueur;
import main.Joueur; import main.Joueur;
public class Vampire extends CartePersonnage{ public class Vampire extends CartePersonnage{
//constructeur
public Vampire(String nom, int hp, Joueur joueur, Condition condition) {
super(nom, hp, joueur, condition);
//this.setEffet(
public Vampire(String nom, String desc ,int hp, Joueur joueur) { //new EffetSelf( new ActionAltererStatistiquesJoueur("HP",2,true));
super(nom,desc, hp, joueur); //);
//
Action action = new ActionAltererStatistiquesJoueur("HP",2,true);
Effet effet = new EffetSelf(action);
this.setEffet(effet);
this.setCondition(new WinConditionShadow());
} }
@Override public void utiliser(Joueur j)
public void utiliser()
{ {
this.getEffet().utiliser(this.getJoueur()); //this.getEffet().utiliser()
} }
/** //m<EFBFBD>thode
* Lance l'action d'attaquer de Vampire public void attaquer(Joueur j) {
* <br><br> Effet : Soin 2 PV
* @param j Le joueur qui subit l'attaque // attaquer(j)
* @return void //utiliser(this.joueur);
*/
public void attaquer(Joueur j, int blessure) {
if(this.getJoueur().getRevele())
{
utiliser(this.getJoueur());
}
} }
} }

View File

@ -16,8 +16,6 @@ import personnage.Daniel;
class ConditionClassPersonnageTest { class ConditionClassPersonnageTest {
@Test @Test
public void conditionClass_RenvoieAppartenancePersonnage() throws Exception { public void conditionClass_RenvoieAppartenancePersonnage() throws Exception {
@ -36,7 +34,7 @@ class ConditionClassPersonnageTest {
assertTrue(cc.isTrue(j)); assertTrue(cc.isTrue(j));
CartePersonnage cp2 = new Bob(null, null, 0, j); CartePersonnage cp2 = new Bob(j);
// Le personnage ne fait pas partie des classes // Le personnage ne fait pas partie des classes
j.setCartePersonnage(cp2); j.setCartePersonnage(cp2);
assertFalse(cc.isTrue(j)); assertFalse(cc.isTrue(j));

View File

@ -34,8 +34,6 @@ class ActionAltererStatistiquesJoueurTest {
j1.setPlateau(p); j1.setPlateau(p);
j2.setPlateau(p); j2.setPlateau(p);
} }
@Test @Test
@ -52,7 +50,6 @@ class ActionAltererStatistiquesJoueurTest {
void affecte_StatsAddedUp() { void affecte_StatsAddedUp() {
int entier = rand.nextInt(); int entier = rand.nextInt();
int pvBaseJoueur = j2.getStat(Joueur.PLAYER_HP); int pvBaseJoueur = j2.getStat(Joueur.PLAYER_HP);
ActionAltererStatistiquesJoueur aasj = new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, entier, true); ActionAltererStatistiquesJoueur aasj = new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, entier, true);
aasj.affecte(j1, j2); aasj.affecte(j1, j2);

View File

@ -4,13 +4,13 @@ import static org.junit.Assert.assertTrue;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Random;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import main.Joueur; import main.Joueur;
import main.Plateau; import main.Plateau;
import personnage.Allie;
class ActionAttaquerTest { class ActionAttaquerTest {
@ -25,6 +25,9 @@ class ActionAttaquerTest {
j1 = new Joueur("Michel"); j1 = new Joueur("Michel");
j2 = new Joueur("Gérard"); j2 = new Joueur("Gérard");
Allie allie1 = new Allie(j1);
Allie allie2 = new Allie(j2);
joueurs.add(j1); joueurs.add(j1);
joueurs.add(j2); joueurs.add(j2);
@ -38,24 +41,24 @@ class ActionAttaquerTest {
/* /*
* L'attaque du plateau se base sur des tirages aléatoires de dés. * L'attaque du plateau se base sur des tirages aléatoires de dés.
* La réussite moyenne d'une attaque est d'environ 80 % * La réussite moyenne d'une attaque est d'environ 80 %
* En autorisant une erreur d'environ 2 % * En autorisant une erreur d'environ 5 %
* *
* On vérifie que la différence du nombre d'attaques réussie avec la moyenne * On vérifie que la différence du nombre d'attaques réussie avec la moyenne
* des attaques réussie est bien inférieure à 2 %. * des attaques réussie est bien inférieure à 5 %.
*/ */
@Test @Test
void attaquer_BaissePV() { void attaquer_BaissePV() {
int error = 2; int error = 5;
ActionAttaquer aa = new ActionAttaquer(); ActionAttaquer aa = new ActionAttaquer();
int pvBaseJ2 = 100; int pvBaseJ2 = 100;
for(int j = 0; j< 1000; j++) { for(int j = 0; j< 100; j++) {
int countNb = 0; int countNb = 0;
for(int i = 0; i < 10000; i++) for(int i = 0; i < 2000; i++)
{ {
j2.setStat(Joueur.PLAYER_HP, pvBaseJ2); j2.setStat(Joueur.PLAYER_HP, pvBaseJ2);
aa.affecte(j1, j2); aa.affecte(j1, j2);
@ -63,9 +66,8 @@ class ActionAttaquerTest {
if(j2.getStat(Joueur.PLAYER_HP) < pvBaseJ2) countNb++; if(j2.getStat(Joueur.PLAYER_HP) < pvBaseJ2) countNb++;
} }
countNb /= 100; countNb /= 20;
assertTrue(Math.abs(countNb-80) <= error); assertTrue(Math.abs(countNb-80) <= error);
} }
} }
} }

View File

@ -0,0 +1,100 @@
package main;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import carte.EquipementStat;
import condition.Condition;
import effet.EffetSelf;
import effet.action.ActionAltererStatistiquesJoueur;
import personnage.Allie;
class GestionnaireEquipementsTest {
Joueur j1;
Joueur j2;
Plateau p;
Random rand;
Allie a1;
Allie a2;
@BeforeEach
void init()
{
rand = new Random();
List<Joueur> joueurs = new ArrayList<Joueur>();
j1 = new Joueur("Michel");
j2 = new Joueur("Antoine");
joueurs.add(j1);
joueurs.add(j2);
p = new Plateau(joueurs);
a1 = new Allie(j1);
a2 = new Allie(j2);
j1.setCartePersonnage(a1);
j2.setCartePersonnage(a2);
}
@Test
void ajouterEquipement_NbEquipements() {
int nbEffets = 20;
for(int i = 0; i < 20; i++) {
EquipementStat es = new EquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true)));
es.setCondition(new Condition());
j1.ajouterEquipement(es);
}
assertEquals(nbEffets, j1.getStat(Joueur.PLAYER_NB_EQUIPEMENTS));
}
@Test
void ajouterEquipement_StackingStats() {
int nbEffets = 20;
int valeurEffet = 3;
for(int i = 0; i < 20; i++) {
EquipementStat es = new EquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true)));
es.setCondition(new Condition());
j1.ajouterEquipement(es);
}
assertEquals(nbEffets*valeurEffet, j1.getStat(Joueur.PLAYER_DAMAGE));
}
@Test
void ajouterEquipement_RetirerEffet() {
int valeurEffet = 3;
EquipementStat es = new EquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true)));
es.setCondition(new Condition());
j1.ajouterEquipement(es);
assertEquals(valeurEffet, j1.getStat(Joueur.PLAYER_DAMAGE));
j1.retirerEquipement(es);
assertEquals(0, j1.getStat(Joueur.PLAYER_DAMAGE));
}
}

View File

@ -1,6 +1,7 @@
package personnage; package personnage;
import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -39,18 +40,35 @@ class AllieTest {
@Test @Test
void utiliser_SoinTotal() { void utiliser_SoinTotal() {
j1.setStat("HP", 0); j1.setStat(Joueur.PLAYER_HP, 0);
j1.getCartePersonnage().utiliser(); j1.getCartePersonnage().utiliser();
int pvAllie = j1.getCartePersonnage().getPv(); int pvAllie = j1.getCartePersonnage().getPv();
assertEquals(pvAllie,j1.getStat("HP")); // Le joueur n'est pas révélé, le soin n'a pas eu lieu.
assertEquals(j1.getStat(Joueur.PLAYER_HP),0);
j1.setStat("HP", 0); j1.setRevele(true);
j1.getCartePersonnage().utiliser(); j1.getCartePersonnage().utiliser();
// Le soin n'a fonctionné qu'une seule fois // Le soin a fonctionné la première fois, il est désormais "utilisé".
assertEquals(0,j1.getStat("HP")); assertEquals(j1.getStat(Joueur.PLAYER_HP),pvAllie);
j1.setStat(Joueur.PLAYER_HP, 0);
j1.getCartePersonnage().utiliser();
// Le soin a déjà été utilisé
assertEquals(0,j1.getStat(Joueur.PLAYER_HP));
}
@Test
void victoire() {
j1.setStat(Joueur.PLAYER_HP, 0);
p.setStat(Plateau.PARTIE_FINIE, 1);
assertTrue(a.victoire());
} }

View File

@ -0,0 +1,97 @@
package personnage;
import static org.junit.Assert.assertTrue;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import main.Joueur;
import main.Plateau;
class VampireTest {
Joueur j1;
Joueur j2;
Plateau p;
Random rand;
Vampire v;
Allie a;
@BeforeEach
void init()
{
rand = new Random();
List<Joueur> joueurs = new ArrayList<Joueur>();
j1 = new Joueur("Michel");
j2 = new Joueur("Saad");
joueurs.add(j1);
joueurs.add(j2);
p = new Plateau(joueurs);
v = new Vampire(j1);
a = new Allie(j2);
}
@Test
void attaquer_Vampirisme() {
int pvVampireBase = 0;
int pvAllieBase = a.getPv();
int countHP = 0;
for(int j = 0; j < 100; j++) {
countHP = 0;
for(int i = 0; i < 2000; i++) {
// Le joueur n'est pas révélé
j1.setRevele(false);
j1.setStat(Joueur.PLAYER_HP, pvVampireBase);
j2.setStat(Joueur.PLAYER_HP, pvAllieBase);
p.attaquer(j1, j2);
// Vampire n'a pas récupéré de pv's lors de son attaque
assertTrue(j1.getStat(Joueur.PLAYER_HP) == 0);
// Joueur se révéle
j1.reveal();
j2.setStat(Joueur.PLAYER_HP, pvAllieBase);
p.attaquer(j1, j2);
// Il récupère des pv's si la blessure est supérieure à 0
// On compte le nombre de fois il récupère des pv's
if(j2.getStat(Joueur.PLAYER_HP) < pvAllieBase && j1.getStat(Joueur.PLAYER_HP) > 0) {
countHP++;
}
}
// On boost le coverage
v.utiliser();
// On ramène en %
countHP /= 20;
// En moyenne une attaque réussie 80 % du temps, avec une marge d'erreur de 5 %
assertTrue(Math.abs(80-countHP) < 5);
}}
@Test
void victoire() {
j1.setStat(Joueur.PLAYER_HP, 0);
p.setStat( Plateau.NB_MORTS_NEUTRAL, 5);
assertTrue(v.victoire());
}
}