diff --git a/README.md b/README.md index beb148f..c74bdb0 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,13 @@ Pour gagner, les Hunters et Shadow doivent éliminer tous les personnages du cam ## Comment l'utiliser -Vous trouverez la documentation pour utliser notre application [ici]. +Dans un premier temps, vous pouvez télécharger la dernière version de notre application en utilisant la commande : + +```git clone https://github.com/PTE-SH/ShadowHunterGame.git``` + +Puis, il faut executez le ``ShadowHunterGame.exe`` pour pouvoir y jouer. + +Ce projet repose sur le [Java JDK 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html) pour pouvoir fonctionner. ## Auteurs diff --git a/src/carte/CarteEquipementStat.java b/src/carte/CarteEquipementStat.java index a079b96..58b25ab 100644 --- a/src/carte/CarteEquipementStat.java +++ b/src/carte/CarteEquipementStat.java @@ -22,6 +22,12 @@ public class CarteEquipementStat extends CarteEquipement{ this.setEffet(effet); this.setCondition(condition); } + + public CarteEquipementStat(Effet effet) { + super("",""); + this.setEffet(effet); + this.setCondition(new Condition()); + } @Override public void reverse(Joueur j) { diff --git a/src/condition/ConditionType.java b/src/condition/ConditionEquipe.java similarity index 80% rename from src/condition/ConditionType.java rename to src/condition/ConditionEquipe.java index 227518c..996c970 100644 --- a/src/condition/ConditionType.java +++ b/src/condition/ConditionEquipe.java @@ -1,6 +1,7 @@ package condition; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import main.Joueur; @@ -8,7 +9,7 @@ import personnage.CartePersonnage; import personnage.CartePersonnage.Equipe; -public class ConditionType extends Condition{ +public class ConditionEquipe extends Condition{ /** * @@ -16,12 +17,16 @@ public class ConditionType extends Condition{ private static final long serialVersionUID = 8261153600401164649L; private List equipes; - public ConditionType(Equipe e) { + public ConditionEquipe(Equipe e) { this.equipes = new ArrayList(); this.equipes.add(e); } - public ConditionType(List equipes){ + public ConditionEquipe(Equipe...equipes) { + this.equipes = Arrays.asList(equipes); + } + + public ConditionEquipe(List equipes){ this.equipes = new ArrayList(); this.equipes.addAll(equipes); diff --git a/src/database/CreatingCardsTest.java b/src/database/CreatingCardsTest.java index b8b2a78..bfb69b5 100644 --- a/src/database/CreatingCardsTest.java +++ b/src/database/CreatingCardsTest.java @@ -2,24 +2,33 @@ package database; import carte.CarteEquipementStat; import carte.CartePiochable; -import condition.Condition; import condition.ConditionClassPersonnage; +import condition.ConditionEquipe; import condition.ConditionMultiple; import condition.ConditionReveal; -import condition.ConditionType; +import condition.ConditionStatistiques; import effet.EffetChoisirCible; +import effet.EffetChoisirEffet; import effet.EffetCiblerTous; +import effet.EffetMultiple; import effet.EffetSelf; -import effet.action.Action; import effet.action.ActionAltererStatistiquesJoueur; import effet.action.ActionAltererStatistiquesJoueurRoll; import effet.action.ActionMultiple; import effet.action.ActionReveal; +import effet.action.ActionVoler; import main.Joueur; import main.TypeLumiere; +import main.TypeTenebre; +import main.TypeVision; import personnage.Allie; +import personnage.Bob; import personnage.CartePersonnage; +import personnage.Charles; +import personnage.Daniel; import personnage.Emi; +import personnage.Franklin; +import personnage.Georges; import personnage.LoupGarou; import personnage.Metamorphe; import personnage.Vampire; @@ -38,7 +47,7 @@ public class CreatingCardsTest { //Avénement suprême insert(3,new CartePiochable( new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true)) - ,new ConditionMultiple(new ConditionType(CartePersonnage.Equipe.HUNTER), new ConditionReveal()) + ,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.HUNTER), new ConditionReveal()) )); //Barre de chocolat @@ -50,19 +59,17 @@ public class CreatingCardsTest { //Bénédiction - insert(5,new CartePiochable(new EffetChoisirCible(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,6, true)))); + insert(5,new CartePiochable(new EffetChoisirCible(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,6, true)))); // BOUSSOLE mystique - // 6 + // 6 // 7 // 8 - - // Eau bénite insert(9,new CartePiochable(new EffetSelf(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,2, true)))); insert(10,new CartePiochable(new EffetSelf(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,2, true)))); @@ -75,7 +82,7 @@ public class CreatingCardsTest { insert(12,new CarteEquipementStat( new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true)) - ,new ConditionMultiple(new ConditionType(CartePersonnage.Equipe.HUNTER), new ConditionReveal()) + ,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.HUNTER), new ConditionReveal()) )); // Miroir divin @@ -97,6 +104,138 @@ public class CreatingCardsTest { //Toge sainte insert(16, new CartePiochable(new EffetSelf(new ActionMultiple(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_RESISTANCE, 1, true),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, -1, true))))); + + + // Ténèbre + + // Araignée Sanguinaire + + insert(17, new CartePiochable(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true))))); + + + // Chauve - souris vampire + + insert(18, new CartePiochable(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true))))); + + insert(19, new CartePiochable(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true))))); + + insert(20, new CartePiochable(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true))))); + + // Dynamite + + // 21 + + + // Hache tueuse + insert(22,new CarteEquipementStat( + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true)))); + + // Hachoir maudit + insert(23,new CarteEquipementStat( + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true)))); + + + // Mitrailleuse funeste + // 24 + + // Peau de banane + // 25 + + // Poupé démoniaque + // 26 + + insert(28,new CartePiochable( + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true)) + ,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.SHADOW), new ConditionReveal()) + )); + + // 29 + + insert(30,new CartePiochable( + new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER)))); + + insert(31,new CartePiochable( + new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER)))); + + insert(32,new CarteEquipementStat( + new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true)))); + + + // Vision clairvoyante + insert(33, new CartePiochable(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -1, true)), + new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 11, ConditionStatistiques.LESS))); + + // Vision cupide + + insert(34,new CartePiochable(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); + + insert(35,new CartePiochable(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); + + + // Vision destructrice + + insert(36, new CartePiochable(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 12, ConditionStatistiques.MORE))); + + + // Vision divine + + // Vision enivrante + + insert(38,new CartePiochable(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); + + insert(39,new CartePiochable(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + new ConditionEquipe(CartePersonnage.Equipe.NEUTRE,CartePersonnage.Equipe.SHADOW))); + + // Vision Foudroyante + + insert(40,new CartePiochable(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), + new ConditionEquipe(CartePersonnage.Equipe.SHADOW))); + + + // Vision furtive + + insert(41,new CartePiochable(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + new ConditionEquipe(CartePersonnage.Equipe.HUNTER,CartePersonnage.Equipe.SHADOW))); + + insert(42,new CartePiochable(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))), + new ConditionEquipe(CartePersonnage.Equipe.HUNTER,CartePersonnage.Equipe.SHADOW))); + + // Vision Mortifère + + insert(43,new CartePiochable(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)), + new ConditionEquipe(CartePersonnage.Equipe.SHADOW))); + + + // Vision lugubre + + insert(45,new CartePiochable(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-2,true)), + new ConditionEquipe(CartePersonnage.Equipe.SHADOW))); + + // Vision réconfortante + + // Vision suprême + + insert(48,new Allie(null)); + insert(49,new Bob(null)); + insert(50,new Charles(null)); + + insert(51,new Daniel(null)); + insert(52,new Emi(null)); + insert(53,new Franklin(null)); + + insert(54,new Georges(null)); + insert(55,new LoupGarou(null)); + insert(56,new Metamorphe(null)); + insert(57,new Vampire(null)); + } diff --git a/src/database/QueryGenerator.java b/src/database/QueryGenerator.java index d91faae..1d449b4 100644 --- a/src/database/QueryGenerator.java +++ b/src/database/QueryGenerator.java @@ -1,21 +1,35 @@ package database; -public class QueryGenerator { +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.ObjectOutputStream; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.SQLException; - public static String AllFrom(String table) { - return "SELECT * FROM " + getTable(table); +public class QueryGenerator { + + private final static String url = "jdbc:postgresql://localhost:5432/ShadowHunterDatabase"; + private final static String user = "shManager"; + private final static String password = "shadowhunter1234"; + + public static String AllFrom(String tableName) { + return "SELECT * FROM " + getTable(tableName); } - public static String WithId(String table, int d) { - return "SELECT * FROM " + getTable(table) + "WHERE id =" + d; + public static String WithId(String tableName, int d) { + return "SELECT * FROM " + getTable(tableName) + "WHERE id =" + d; } - public static String WithName(String table, String name) { - return "SELECT * FROM " + getTable(table) + "WHERE nom ='" + name + "'"; + public static String WithName(String tableName, String name) { + return "SELECT * FROM " + getTable(tableName) + "WHERE nom ='" + name + "'"; } - public static String getTable(String s) { - return "public." + '"' + s + '"'; + public static String getTable(String tableName) { + return "public." + '"' + tableName + '"'; } public static String getIdWithNameFrom(String table, String name) { @@ -26,5 +40,49 @@ public class QueryGenerator { return "SELECT name FROM " + getTable(table) + "WHERE id =" + d; } + public static String selectObjectWithId(int id, String tableName) { + return "SELECT objet FROM" + getTable(tableName) + " WHERE id =" + id; + } + public static Connection connect() throws SQLException { + return DriverManager.getConnection(url, user, password); + } + + public static void queryInsertObject(int id, Object o) throws IOException, SQLException { + + String table = null; + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos; + + oos = new ObjectOutputStream(baos); + oos.writeObject(o); + oos.close(); + + ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray()); + + byte[] object = bais.readAllBytes(); + InputStream objectIS = new ByteArrayInputStream(object); + + if(id <= 16) { + table = getTable("CartesLumiere"); + } else if(id <= 32) { + table = getTable("CartesTenebre"); + } else if(id <= 47) { + table = getTable("CartesVision"); + } else if(id <= 57) { + table = getTable("CartesPersonnage"); + } else if(id <= 61) { + table = getTable("CartesDos"); + } + + String query = null; + query = "UPDATE" + table + " SET objet = "; + + Connection conn = connect(); + PreparedStatement pst = conn.prepareStatement(query); + pst.setBinaryStream(4, objectIS); + pst.executeUpdate(); + } + + } diff --git a/src/domaine/properties/langue_fr.properties b/src/domaine/properties/langue_fr.properties index 4b8faf2..56790ca 100644 --- a/src/domaine/properties/langue_fr.properties +++ b/src/domaine/properties/langue_fr.properties @@ -67,5 +67,5 @@ se.soigner=Se soigner mode.claire=Mode clair musique=Musique langue=Langue -parametre=Paramétre +parametre=Paramètre enregistrer=Enregistrer \ No newline at end of file diff --git a/src/effet/EffetMultiple.java b/src/effet/EffetMultiple.java new file mode 100644 index 0000000..3e66830 --- /dev/null +++ b/src/effet/EffetMultiple.java @@ -0,0 +1,30 @@ +package effet; + +import java.util.Arrays; +import java.util.List; + +import main.Joueur; + +public class EffetMultiple extends Effet{ + + + private List effets; + /** + * + */ + private static final long serialVersionUID = 1936073174860639420L; + + public EffetMultiple(Effet...effets) { + super(null); + this.effets = Arrays.asList(effets); + } + + @Override + public void utiliser(Joueur joueur) { + + for(Effet e : effets) { + e.utiliser(joueur); + } + } + +} diff --git a/src/effet/action/ActionVoler.java b/src/effet/action/ActionVoler.java index 0212e47..2671dc2 100644 --- a/src/effet/action/ActionVoler.java +++ b/src/effet/action/ActionVoler.java @@ -8,6 +8,21 @@ import main.Joueur; public class ActionVoler extends Action{ + public final static boolean DONNER = false; + public final static boolean VOLER = true; + + private boolean choix; + + public ActionVoler(Boolean choix) { + super(); + this.choix = choix; + } + + /** + * + */ + private static final long serialVersionUID = 3770148032992025640L; + /** * Lance l'action de voler une carte équipement. * @param j1 Le joueur qui vol @@ -17,12 +32,24 @@ public class ActionVoler extends Action{ @Override public void affecte(Joueur j1, Joueur j2) { - List equipements = j2.getEquipements(); - - // J1 choisit quel équipement voler - CarteEquipement equipement = j1.choisir(equipements); - - j1.voler(j2,equipement); + if(this.choix) { + + List equipements = j2.getEquipements(); + + // J1 choisit quel équipement voler + CarteEquipement equipement = j1.choisir(equipements); + + j1.voler(j2,equipement); + }else { + + List equipements = j1.getEquipements(); + + // J1 choisit quel équipement voler + CarteEquipement equipement = j1.choisir(equipements); + + j2.voler(j1,equipement); + + } } } diff --git a/src/ihm/Main.java b/src/ihm/Main.java index 768b43f..5d4795b 100644 --- a/src/ihm/Main.java +++ b/src/ihm/Main.java @@ -17,7 +17,11 @@ public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception { +<<<<<<< HEAD final URL fxmlURL = getClass().getResource("ressources/Jouer_tour(2c2)choisir_joueur.fxml"); // "ressources/Jouer_tour(1)lancer_des.fxml" +======= + final URL fxmlURL = getClass().getResource("ressources/Menu.fxml"); +>>>>>>> 13ae661b3bfcbefc0024fd7828af03782c9a2e66 final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); Pane root = fxmlLoader.load(); diff --git a/src/ihm/controller/MenuController.java b/src/ihm/controller/MenuController.java index 5db3678..46923aa 100644 --- a/src/ihm/controller/MenuController.java +++ b/src/ihm/controller/MenuController.java @@ -16,6 +16,7 @@ import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; +import javafx.scene.layout.Pane; import javafx.stage.Stage; public class MenuController implements Initializable{ @@ -49,13 +50,43 @@ public class MenuController implements Initializable{ } - - public void afficherRegle(MouseEvent mouseEvent) { + + @FXML + public void ouvrirParametres(MouseEvent mouseEvent) throws IOException{ + InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav"); + EffetSonore.playSoundEffect(fileSound1); + + System.out.println("Passage à l'écran des paramètres"); + final URL fxmlURL = getClass().getResource("/ihm/ressources/parametre.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); + + + } + @FXML + public void quitterLappli(MouseEvent mouseEvent) throws IOException{ + System.exit(0); + } + + + @FXML + public void afficherRegle(MouseEvent mouseEvent) throws IOException { InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav"); EffetSonore.playSoundEffect(fileSound1); - System.out.println("blaaaa"); + System.out.println("Passage à l'écran des règles"); + final URL fxmlURL = getClass().getResource("/ihm/ressources/Regles.fxml"); + final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); + final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); + AnchorPane pane = fxmlLoader.load(); + Scene scene = new Scene(pane); + Stage appStage = (Stage) ((Node) mouseEvent.getSource()).getScene().getWindow(); + appStage.setScene(scene); + appStage.show(); } } diff --git a/src/ihm/controller/PauseController.java b/src/ihm/controller/PauseController.java index d2b2278..80ead1f 100644 --- a/src/ihm/controller/PauseController.java +++ b/src/ihm/controller/PauseController.java @@ -28,7 +28,7 @@ public class PauseController implements Initializable { private CheckBox cbEffet; String filepathMusique = "src//ihm//ressources//musique//The_Red_Fox_Tavern.wav"; - InputStream fileMusique = getClass().getResourceAsStream("src//ihm//ressources//musique//The_Red_Fox_Tavern.wav"); + InputStream fileMusique = getClass().getResourceAsStream("/ihm/ressources/musique/The_Red_Fox_Tavern.wav"); boolean MusiqueLancee = ParametreController.cbMusiqueCoche; boolean SonLance = ParametreController.cbSonCoche; @@ -53,24 +53,21 @@ public class PauseController implements Initializable { // Pour la musique if (fileMusique != null) { - System.out.println("point d'arret 1"); if (cbMusique.isSelected()) { System.out.println("\tLancement de la musique"); if (Musique.clipTimePosition == 0 && MusiqueLancee == false) { // si la musique n'a jamais été lancé Musique.playMusique(fileMusique); MusiqueLancee = true; - System.out.println("point d'arret 2"); } else - Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret - System.out.println("point d'arret 3"); + Musique.resumeMusique(Musique.clip); // si elle a deja été lancé mais mis en pause, reprend a partir du point d'arret } else { Musique.pauseMusique(Musique.clip); // met en pause la musique System.out.println("\tMise en pause de la musique"); } } else { - System.out.println("ON A UN PROBLEME, AUCUN POINT D'ARRET N'EST PASSE"); + System.out.println("fichier audio non trouvé"); } // Pour les effets sonores diff --git a/src/ihm/controller/PlateauController.java b/src/ihm/controller/PlateauController.java index 9b7f841..84e6c05 100644 --- a/src/ihm/controller/PlateauController.java +++ b/src/ihm/controller/PlateauController.java @@ -69,7 +69,7 @@ public class PlateauController implements Initializable { } for(int i = 0; i 1) { + index--; + } + + System.out.println("Page précédente"); + InputStream input = getClass().getResourceAsStream("/ihm/ressources/img/Regle" + index + ".png"); + Image image = new Image(input); + imageRegles.setImage(image); + + } + + @FXML + public void retourMenu(MouseEvent mouseEvent) throws IOException { + + InputStream fileSound1 = getClass().getResourceAsStream("/ihm/ressources/musique/BEEP1.wav"); + + EffetSonore.playSoundEffect(fileSound1); + System.out.println("Retour au Menu"); + final URL fxmlURL = getClass().getResource("/ihm/ressources/Menu.fxml"); + final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); + final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); + AnchorPane pane = fxmlLoader.load(); + Scene scene = new Scene(pane); + Stage appStage = (Stage) ((Node) mouseEvent.getSource()).getScene().getWindow(); + appStage.setScene(scene); + appStage.show(); + + } + +} diff --git a/src/ihm/ressources/Menu.fxml b/src/ihm/ressources/Menu.fxml index 857a225..7e50725 100644 --- a/src/ihm/ressources/Menu.fxml +++ b/src/ihm/ressources/Menu.fxml @@ -9,11 +9,11 @@ - + - + + + diff --git a/src/ihm/ressources/Regles.fxml b/src/ihm/ressources/Regles.fxml new file mode 100644 index 0000000..9990be8 --- /dev/null +++ b/src/ihm/ressources/Regles.fxml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/ihm/ressources/img/Regle1.PNG b/src/ihm/ressources/img/Regle1.PNG new file mode 100644 index 0000000..cbbdcee Binary files /dev/null and b/src/ihm/ressources/img/Regle1.PNG differ diff --git a/src/ihm/ressources/img/Regle2.PNG b/src/ihm/ressources/img/Regle2.PNG new file mode 100644 index 0000000..2d95dcb Binary files /dev/null and b/src/ihm/ressources/img/Regle2.PNG differ diff --git a/src/ihm/ressources/img/Regle3.PNG b/src/ihm/ressources/img/Regle3.PNG new file mode 100644 index 0000000..2876f9a Binary files /dev/null and b/src/ihm/ressources/img/Regle3.PNG differ diff --git a/src/ihm/ressources/img/Regle4.PNG b/src/ihm/ressources/img/Regle4.PNG new file mode 100644 index 0000000..682d44b Binary files /dev/null and b/src/ihm/ressources/img/Regle4.PNG differ diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 083aecd..bde1f7e 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -87,7 +87,7 @@ public class Plateau extends Thread{ CarteLieu lieu5 = new CarteLieuType("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre); CarteLieu lieu6 = new CarteLieu("Sanctuaire Ancien","desc",new Point(-1,9)); - lieu6.setEffet(new EffetChoisirCible(new ActionVoler())); + lieu6.setEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))); List cls = new ArrayList(); cls.add(lieu6); diff --git a/src/personnage/Allie.java b/src/personnage/Allie.java index a8243f4..b719389 100644 --- a/src/personnage/Allie.java +++ b/src/personnage/Allie.java @@ -15,6 +15,11 @@ import main.Plateau; public class Allie extends Unique{ + /** + * + */ + private static final long serialVersionUID = 8822533547275463314L; + public Allie(Joueur joueur) { super("ALLIE","desc", 8, joueur); diff --git a/src/personnage/Bob.java b/src/personnage/Bob.java index 55de922..1cf68cb 100644 --- a/src/personnage/Bob.java +++ b/src/personnage/Bob.java @@ -8,13 +8,28 @@ import main.Joueur; public class Bob extends CartePersonnage{ + /** + * + */ + private static final long serialVersionUID = -5593891138436384632L; + + public Bob() { + super("BOB","desc", 10, null); + Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE); + this.setCondition(condition); + + + EffetTarget effet = new EffetTarget(new ActionVoler(ActionVoler.VOLER)); + this.setEffet(effet); + } + public Bob(Joueur joueur){ super("BOB","desc", 10, joueur); Condition condition = new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_NB_EQUIPEMENTS, 5, ConditionStatistiques.MORE); this.setCondition(condition); - EffetTarget effet = new EffetTarget(new ActionVoler()); + EffetTarget effet = new EffetTarget(new ActionVoler(ActionVoler.VOLER)); this.setEffet(effet); } diff --git a/src/personnage/Daniel.java b/src/personnage/Daniel.java index 8139eb9..d20db21 100644 --- a/src/personnage/Daniel.java +++ b/src/personnage/Daniel.java @@ -13,8 +13,33 @@ import main.Plateau; public class Daniel extends CartePersonnage{ - public Daniel(String nom, String desc ,int hp, Joueur joueur) throws Exception { - super(nom,desc, hp, joueur); + /** + * + */ + private static final long serialVersionUID = 6436431310604672660L; + + public static final int HP = 13; + + + public Daniel(Joueur j) { + super("Daniel","desc", HP, j); + List conditions = new ArrayList(); + List conditions2 = new ArrayList(); + + conditions.add(new WinConditionHunter()); + + conditions2.add(new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 0, ConditionStatistiques.LESS)); + conditions2.add(new ConditionStatistiques(ConditionStatistiques.PLATEAU, Plateau.NB_MORTS, 1, ConditionStatistiques.LESS)); + + conditions.add(new ConditionMultiple(conditions2)); + + Condition winCondition = new ConditionMultipleOR(conditions); + + this.setCondition(winCondition); + } + + public Daniel(String nom, String desc , Joueur joueur) throws Exception { + super(nom,desc,HP, joueur); List conditions = new ArrayList(); List conditions2 = new ArrayList(); @@ -31,6 +56,8 @@ public class Daniel extends CartePersonnage{ this.setCondition(winCondition); } + + public void utiliser() { this.getJoueur().reveal(); } diff --git a/src/personnage/Emi.java b/src/personnage/Emi.java index a7a3b34..3944526 100644 --- a/src/personnage/Emi.java +++ b/src/personnage/Emi.java @@ -4,6 +4,15 @@ import condition.WinConditionHunter; import main.Joueur; public class Emi extends CartePersonnage{ + + public static final int HP = 13; + + public Emi(Joueur j) { + super("EMI","desc", HP, j); + + this.setCondition(new WinConditionHunter()); + } + //constructeur public Emi(String nom, String desc ,int hp, Joueur joueur) { super(nom,desc, hp, joueur); @@ -12,6 +21,9 @@ public class Emi extends CartePersonnage{ } + + + public void deplacer() { } diff --git a/src/personnage/Georges.java b/src/personnage/Georges.java index ecb5c30..3dd6114 100644 --- a/src/personnage/Georges.java +++ b/src/personnage/Georges.java @@ -6,9 +6,17 @@ import main.Plateau; public class Georges extends Unique{ + + public Georges(Joueur joueur) { + super("Franklin", "desc", 14, joueur); + this.setCondition(new WinConditionHunter()); + this.setEquipe(CartePersonnage.Equipe.HUNTER); + } + public Georges(String nom, int hp, Joueur joueur) { super(nom, nom, hp, joueur); this.setCondition(new WinConditionHunter()); + this.setEquipe(CartePersonnage.Equipe.HUNTER); } public void utiliser() { diff --git a/src/personnage/LoupGarou.java b/src/personnage/LoupGarou.java index 71ca9fe..bc0b1d2 100644 --- a/src/personnage/LoupGarou.java +++ b/src/personnage/LoupGarou.java @@ -5,12 +5,22 @@ import main.Joueur; public class LoupGarou extends CartePersonnage { + public static final int HP = 14; + + public LoupGarou(Joueur j) { + super("LOUP-GAROU","desc", HP, j); + this.setCondition(new WinConditionShadow()); + this.setEquipe(CartePersonnage.Equipe.SHADOW); + } + public LoupGarou(String nom, String desc ,int hp, Joueur joueur) { super(nom,desc, hp, joueur); this.setCondition(new WinConditionShadow()); } + + public void utiliser() { } diff --git a/src/personnage/Metamorphe.java b/src/personnage/Metamorphe.java index 6aae095..ecf9868 100644 --- a/src/personnage/Metamorphe.java +++ b/src/personnage/Metamorphe.java @@ -5,11 +5,24 @@ import main.Joueur; public class Metamorphe extends CartePersonnage{ + /** + * + */ + private static final long serialVersionUID = 8415184267445994107L; + public final static int HP = 11; + + public Metamorphe(Joueur j) { + super("METAMORPHE","desc", HP, j); + this.setCondition(new WinConditionShadow()); + } + public Metamorphe(String nom, String desc ,int hp, Joueur joueur) { super(nom,desc, hp, joueur); this.setCondition(new WinConditionShadow()); } + + public void utiliser() { } } diff --git a/tests/condition/ConditionTypeTest.java b/tests/condition/ConditionTypeTest.java index 240ff16..2313207 100644 --- a/tests/condition/ConditionTypeTest.java +++ b/tests/condition/ConditionTypeTest.java @@ -24,7 +24,7 @@ class ConditionTypeTest { List equipes = new ArrayList(); equipes.add(CartePersonnage.Equipe.HUNTER); equipes.add(CartePersonnage.Equipe.NEUTRE); - ConditionType ct = new ConditionType(equipes); + ConditionEquipe ct = new ConditionEquipe(equipes); Joueur j = new Joueur(null); @@ -46,7 +46,7 @@ class ConditionTypeTest { List equipes = new ArrayList(); - ConditionType ct = new ConditionType(equipes); + ConditionEquipe ct = new ConditionEquipe(equipes); Joueur j = new Joueur(null); j.setCartePersonnage(new Allie(j)); assertFalse(ct.isTrue(j)); diff --git a/tests/main/PlateauTest.java b/tests/main/PlateauTest.java index 75012ac..4580e33 100644 --- a/tests/main/PlateauTest.java +++ b/tests/main/PlateauTest.java @@ -82,7 +82,7 @@ class PlateauTest { CarteLieu lieu5 = new CarteLieuType("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre); CarteLieu lieu6 = new CarteLieu("Sanctuaire Ancien","desc",new Point(-1,9)); - lieu6.setEffet(new EffetChoisirCible(new ActionVoler())); + lieu6.setEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))); List cls = new ArrayList(); cls.add(lieu6);