diff --git a/src/carte/CarteLieuMultiple.java b/src/carte/CarteLieuMultiple.java index 3a7c6be..1082c11 100644 --- a/src/carte/CarteLieuMultiple.java +++ b/src/carte/CarteLieuMultiple.java @@ -3,7 +3,6 @@ package carte; import java.awt.Point; import java.util.List; -import carte.CartePiochable.Type; import main.Joueur; import main.Pioche; @@ -27,7 +26,7 @@ public class CarteLieuMultiple extends CarteLieu{ Pioche p = (Pioche) j.choisir(pioches, Pioche.class); System.out.println(pioches+ " "+p); System.out.println(p.getStack()); - Carte c = p.piocher(); + Carte c = p.piocher(j); c.utiliser(j); } diff --git a/src/carte/CarteLieuType.java b/src/carte/CarteLieuType.java index e0af7e0..85e44f1 100644 --- a/src/carte/CarteLieuType.java +++ b/src/carte/CarteLieuType.java @@ -32,7 +32,7 @@ public class CarteLieuType extends CarteLieu{ */ public void utiliser(Joueur j) { System.out.println(pioche); - CartePiochable carte = pioche.piocher(); + CartePiochable carte = pioche.piocher(j); carte.utiliser(j); } diff --git a/src/carte/CartePiochable.java b/src/carte/CartePiochable.java index 15b58c4..7fb6811 100644 --- a/src/carte/CartePiochable.java +++ b/src/carte/CartePiochable.java @@ -41,10 +41,9 @@ public class CartePiochable extends CarteCondition implements Serializable{ /* * @param j Appel la méthode utiliser de effet sur le joueur j */ - + @Override public void utiliser(Joueur j) { GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu(); - gj.piocher(j,this); System.out.println("CartePiochable "+this + " Condition : "+this.getCondition()+" Effet : "+this.getEffet()+" Action : "+this.getEffet().getAction()); super.utiliser(j); } diff --git a/src/database/CreatingCardsTest.java b/src/database/CreatingCardsTest.java index c680487..650fb7f 100644 --- a/src/database/CreatingCardsTest.java +++ b/src/database/CreatingCardsTest.java @@ -48,6 +48,11 @@ public class CreatingCardsTest { //Ange gardien try { + for(int i = 0; i < 67; i++) { + DatabaseManager.queryInsertObject(i, null); + } + + DatabaseManager.queryInsertObject(2,new CartePiochable(CartePiochable.Type.LUMIERE, new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_IMMUNITY, 1, true)))); @@ -115,28 +120,33 @@ public class CreatingCardsTest { // Ténèbre // Araignée Sanguinaire - - DatabaseManager.queryInsertObject(17, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + /* + 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))))); // Chauve - souris vampire - DatabaseManager.queryInsertObject(18, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + DatabaseManager.queryInsertObject(18, 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))))); - DatabaseManager.queryInsertObject(19, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + DatabaseManager.queryInsertObject(19, 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))))); - DatabaseManager.queryInsertObject(20, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)), + 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, + 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)))); @@ -161,17 +171,18 @@ public class CreatingCardsTest { )); // 29 - + */ DatabaseManager.queryInsertObject(30,new CartePiochable(CartePiochable.Type.TENEBRE, new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER)))); DatabaseManager.queryInsertObject(31,new CartePiochable(CartePiochable.Type.TENEBRE, new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER)))); + /* DatabaseManager.queryInsertObject(32,new CarteEquipementStat(CartePiochable.Type.TENEBRE, new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true)))); - + */ // Vision clairvoyante DatabaseManager.queryInsertObject(33, new CarteVision(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -1, true), new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 11, ConditionStatistiques.LESS))); diff --git a/src/database/DatabaseManager.java b/src/database/DatabaseManager.java index a4480e8..cce9054 100644 --- a/src/database/DatabaseManager.java +++ b/src/database/DatabaseManager.java @@ -19,15 +19,20 @@ public class DatabaseManager { private final static String url = "jdbc:postgresql://localhost:5432/ShadowHunterDatabase"; private final static String user = "shManager"; private final static String password = "shadowhunter1234"; - - public static Connection connect() throws SQLException { - return DriverManager.getConnection(url, user, password); - } + private static Connection connection; + + public static void connect() throws SQLException { + if(connection == null || connection.isClosed()) { + connection = DriverManager.getConnection(url, user, password); + } + } public static List remplirTable(String query) { List list = new ArrayList(); - try (Connection connection = connect()) { - + + + try{ + connect(); //System.out.println("Connected to PostgreSQL database!"); Statement statement = connection.createStatement(); //System.out.println("Reading records..."); @@ -44,8 +49,8 @@ public class DatabaseManager { public static List remplirTableSansImage(String query) { List list = new ArrayList(); - try (Connection connection = connect()) { - + try { + connect(); //System.out.println("Connected to PostgreSQL database!"); Statement statement = connection.createStatement(); //System.out.println("Reading records..."); @@ -93,8 +98,8 @@ public class DatabaseManager { query = "UPDATE " + table + " SET objet = ? " + " WHERE id = ? " ; - Connection conn = connect(); - PreparedStatement pst = conn.prepareStatement(query); + connect(); + PreparedStatement pst = connection.prepareStatement(query); pst.setBinaryStream(1, objectIS); pst.setInt(2, id); pst.executeUpdate(); diff --git a/src/database/RessourceLoader.java b/src/database/RessourceLoader.java index b7eb816..a8b9d6c 100644 --- a/src/database/RessourceLoader.java +++ b/src/database/RessourceLoader.java @@ -58,8 +58,10 @@ public class RessourceLoader { Record r = t.getList().get(i); byte[] obj = r.getObjet(); - if(obj != null) { - Object o = deserialize(obj); + Object o = deserialize(obj); + if(o != null && o != null) { + + Carte c = (Carte)o; c.setNom(r.getNom()); cartes.put(i+1, c); diff --git a/src/effet/action/ActionVoler.java b/src/effet/action/ActionVoler.java index b8e2e86..c2280ec 100644 --- a/src/effet/action/ActionVoler.java +++ b/src/effet/action/ActionVoler.java @@ -32,20 +32,23 @@ public class ActionVoler extends Action{ @Override public void affecte(Joueur j1, Joueur j2) { - if(this.choix) { - - List equipements = j2.getEquipements(); + List equipements = j2.getEquipements(); + + if(!equipements.isEmpty()) { + + CarteEquipement equipement = null; + + if(this.choix) { + // J1 choisit quel équipement voler + equipement = (CarteEquipement) j1.choisir(equipements, CarteEquipement.class); + }else { + + // J1 choisit quel équipement voler + equipement = (CarteEquipement) j2.choisir(equipements,CarteEquipement.class); + } - // J1 choisit quel équipement voler - CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements, CarteEquipement.class); j1.voler(j2,equipement); - }else { - - List equipements = j2.getEquipements(); - // J1 choisit quel équipement voler - CarteEquipement equipement = (CarteEquipement) j2.choisir(equipements,CarteEquipement.class); - j1.voler(j2,equipement); - } + } } diff --git a/src/ihm/ImageViewEquipement.java b/src/ihm/ImageViewEquipement.java index d518eb5..8b826a2 100644 --- a/src/ihm/ImageViewEquipement.java +++ b/src/ihm/ImageViewEquipement.java @@ -1,6 +1,8 @@ package ihm; import carte.CarteEquipement; +import ihm.controller.PlateauController; +import javafx.scene.image.Image; import javafx.scene.image.ImageView; public class ImageViewEquipement extends ImageView{ @@ -9,6 +11,8 @@ public class ImageViewEquipement extends ImageView{ public ImageViewEquipement(CarteEquipement ce) { this.ce = ce; + Image im = PlateauController.getImageCarte(ce); + this.setImage(im); } public CarteEquipement getCp() { diff --git a/src/ihm/controller/ChoisirEquipement.java b/src/ihm/controller/ChoisirEquipement.java index 7de8bbc..f07c7d0 100644 --- a/src/ihm/controller/ChoisirEquipement.java +++ b/src/ihm/controller/ChoisirEquipement.java @@ -8,29 +8,21 @@ import java.util.ResourceBundle; import carte.CarteEquipement; import javafx.fxml.FXML; import javafx.fxml.Initializable; +import javafx.scene.control.ScrollPane; import javafx.scene.image.ImageView; import javafx.scene.layout.GridPane; +import javafx.scene.layout.HBox; +import main.GestionnaireJeu; public class ChoisirEquipement implements Initializable{ @FXML private GridPane grilleEquipement; + @FXML private HBox hbox; private List equipements = new ArrayList(); private CarteEquipement equipementSelected; @Override public void initialize(URL arg0, ResourceBundle arg1) { - for (int i=0; i { - equipementSelected = equipements.get(numEquipement); - }); - } } public List getEquipements() { @@ -61,4 +53,24 @@ public class ChoisirEquipement implements Initializable{ return equipementSelected; } + public void setListCarteEquipements(List lce) { + this.equipements = lce; + } + + public void initChoisirEquipement() { + for (CarteEquipement ce : equipements) { + + ImageView iv = new ImageView(PlateauController.getImageCarte(ce)); + + hbox.getChildren().add(iv); + + iv.fitHeightProperty().bind(hbox.heightProperty()); + //iv.fitWidthProperty().bind(scrollpane.widthProperty()); + iv.setPreserveRatio(true); + iv.setOnMouseClicked(e -> { + equipementSelected = ce; + GestionnaireJeu.notifyPlateau(); + }); + } + } } diff --git a/src/ihm/controller/JoueurIHM.java b/src/ihm/controller/JoueurIHM.java index bfdd42c..aa0f4ab 100644 --- a/src/ihm/controller/JoueurIHM.java +++ b/src/ihm/controller/JoueurIHM.java @@ -1,5 +1,9 @@ package ihm.controller; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + import carte.CarteEquipement; import database.RessourceLoader; import ihm.ImageViewEquipement; @@ -226,22 +230,28 @@ public class JoueurIHM { public void ajouterEquipement(CarteEquipement e) { HBox hb = getPaneEquipement(); ImageViewEquipement ive = new ImageViewEquipement(e); - hb.getChildren().add(new ImageViewEquipement(e)); + hb.getChildren().add(ive); + ive.setPreserveRatio(true); ive.fitHeightProperty().bind(hb.heightProperty()); - + //ive.fitWidthProperty().bind(hb.widthProperty()); } public void retirerEquipement(CarteEquipement e) { + HBox hb = getPaneEquipement(); - for (Node n : hb.getChildren()) { - if (n instanceof ImageViewEquipement) { - ImageViewEquipement ive = (ImageViewEquipement) n; - if (ive.contains(e)) { - hb.getChildren().remove(ive); + List liv = new ArrayList(); + for(Iterator iterator = hb.getChildren().iterator(); iterator.hasNext();) { + Node n = iterator.next(); + + if (n instanceof ImageViewEquipement) { + ImageViewEquipement ive = (ImageViewEquipement) n; + if (ive.contains(e)) { + liv.add(ive); + } } } - } - + + hb.getChildren().removeAll(liv); } public String getNom() { diff --git a/src/ihm/controller/PlateauController.java b/src/ihm/controller/PlateauController.java index f01459f..0fabc94 100644 --- a/src/ihm/controller/PlateauController.java +++ b/src/ihm/controller/PlateauController.java @@ -58,8 +58,8 @@ public class PlateauController implements Initializable { private PiocherCarte pc; private LancerDes ld; - private Map mapRessourcesCartes; - private Map mapRessourcesDosCartes; + private static Map mapRessourcesCartes; + private static Map mapRessourcesDosCartes; public static int DICE_SIX = 1; public static int DICE_QUATRE = 0; @@ -347,12 +347,14 @@ public class PlateauController implements Initializable { } - public void afficherChoisirEquipementVole(Joueur j) throws IOException { + public void afficherChoisirEquipementVole(Joueur j, List 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(); this.ce = fxmlLoader.getController(); + this.ce.setListCarteEquipements(lce); + this.ce.initChoisirEquipement(); JoueurIHM jihm = getJoueurIHM(j); jihm.setZoneJoueur(root); } @@ -369,7 +371,7 @@ public class PlateauController implements Initializable { JoueurIHM jihm = getJoueurIHM(j); Pane p = (Pane) jihm.getZoneJoueur(); - Pane pane = null; + Pane pane = new Pane(); if(p.getChildren() != null && p.getChildren().size() > 0) { @@ -481,13 +483,13 @@ public class PlateauController implements Initializable { } - public Image getImageCarte(Carte carte) { - BufferedImage bi = this.mapRessourcesCartes.get(carte); + public static Image getImageCarte(Carte carte) { + BufferedImage bi = mapRessourcesCartes.get(carte); return RessourceLoader.toJavaFX(bi); } - public Image getImageDosCarte(String s) { - BufferedImage bi = this.mapRessourcesDosCartes.get(s); + public static Image getImageDosCarte(String s) { + BufferedImage bi = mapRessourcesDosCartes.get(s); return RessourceLoader.toJavaFX(bi); } @@ -501,7 +503,6 @@ public class PlateauController implements Initializable { public void retirerEquipement(Joueur j, CarteEquipement e) { JoueurIHM jihm = getJoueurIHM(j); jihm.retirerEquipement(e); - } public void close() throws IOException { diff --git a/src/ihm/ressources/Jouer_tour(2a)voler_equipement.fxml b/src/ihm/ressources/Jouer_tour(2a)voler_equipement.fxml index 9e56c4b..429387c 100644 --- a/src/ihm/ressources/Jouer_tour(2a)voler_equipement.fxml +++ b/src/ihm/ressources/Jouer_tour(2a)voler_equipement.fxml @@ -1,27 +1,26 @@ + - - + - + - + - - + + + + diff --git a/src/main/GestionnaireEquipements.java b/src/main/GestionnaireEquipements.java index d0b1bc1..e3f4d18 100644 --- a/src/main/GestionnaireEquipements.java +++ b/src/main/GestionnaireEquipements.java @@ -29,9 +29,6 @@ public class GestionnaireEquipements { this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, -1); this.j.removeEquipementIHM(e); } - - - } public List getEquipements() { diff --git a/src/main/GestionnaireJeu.java b/src/main/GestionnaireJeu.java index 3b11ccb..d614d0d 100644 --- a/src/main/GestionnaireJeu.java +++ b/src/main/GestionnaireJeu.java @@ -112,12 +112,9 @@ public class GestionnaireJeu { @SuppressWarnings("unchecked") public Object choisir(Joueur joueur, List list, Class cls) { - - if(cls == CarteEquipement.class) { return choisirEquipementVole(joueur, (List) list); }else if(cls == Joueur.class) { - return choisirJoueur(joueur, (List) list, Contexte.ACTIVER_EFFET_LIEU); } return list.get(0); @@ -126,7 +123,7 @@ public class GestionnaireJeu { public CarteEquipement choisirEquipementVole(Joueur joueur, List lce) { Platform.runLater(() -> { try { - pc.afficherChoisirEquipementVole(joueur); + pc.afficherChoisirEquipementVole(joueur,lce); } catch (IOException e) { e.printStackTrace(); } @@ -307,7 +304,7 @@ public class GestionnaireJeu { public void ajouterEquipement(Joueur joueur, CarteEquipement e) { Platform.runLater(() -> { pc.ajouterEquipement(joueur,e); - }); + }); } public void retirerEquipement(Joueur joueur, CarteEquipement e) { diff --git a/src/main/Joueur.java b/src/main/Joueur.java index b2a1a3f..2df12af 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -128,12 +128,10 @@ public class Joueur { } public void voler(Joueur j2, CarteEquipement equipement) { - j2.gestionnaireEquipements.retirer(equipement); - this.gestionnaireEquipements.ajouter(equipement); } + this.gestionnaireEquipements.ajouter(equipement); + } - - public void attaquer(Joueur j2, int attaqueDice) { int blessure = evaluerImmunite(j2)*(this.evaluerAttaque(j2) + attaqueDice); diff --git a/src/main/Pioche.java b/src/main/Pioche.java index 3b5e28e..f806de6 100644 --- a/src/main/Pioche.java +++ b/src/main/Pioche.java @@ -22,8 +22,11 @@ public class Pioche { Collections.shuffle(cartesPiochables); } - public CartePiochable piocher() { - return cartesPiochables.pop(); + public CartePiochable piocher(Joueur j) { + CartePiochable cp = cartesPiochables.pop(); + GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu(); + gj.piocher(j,cp); + return cp; } public Stack getStack() { diff --git a/src/main/Plateau.java b/src/main/Plateau.java index 55d7b0e..6865770 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -385,7 +385,7 @@ public class Plateau extends Thread{ int roll6 = rollRandom(6); int sum = Math.abs(roll4+roll6); gj.rollDice(j, PlateauController.DICE_BOTH, roll4,roll6); - return 3; + return 8; //return Math.abs(roll4+roll6); }