diff --git a/src/carte/CarteLieu.java b/src/carte/CarteLieu.java index 0c45102..c54908b 100644 --- a/src/carte/CarteLieu.java +++ b/src/carte/CarteLieu.java @@ -13,12 +13,18 @@ public class CarteLieu extends CarteEffet{ private Point coordinates; private CarteLieu voisin; + public CarteLieu(Point point) { + this("","",point); + } + public CarteLieu(String nom, String description, Point p) { super(nom, description); this.coordinates = p; this.listeJoueurs = new ArrayList(); } + + /* * @param j Appel la méthode utiliser de effet sur le joueur j */ diff --git a/src/carte/CarteLieuMultiple.java b/src/carte/CarteLieuMultiple.java new file mode 100644 index 0000000..1c43f93 --- /dev/null +++ b/src/carte/CarteLieuMultiple.java @@ -0,0 +1,35 @@ +package carte; + +import java.awt.Point; +import java.util.List; + +import carte.CartePiochable.Type; +import main.Joueur; +import main.Pioche; + +public class CarteLieuMultiple extends CarteLieu{ + + /** + * + */ + private static final long serialVersionUID = -497959392470353155L; + private List pioches; + + + + public CarteLieuMultiple(Point point) { + super("","",point); + } + /* + * @param j Appel la méthode utiliser de effet sur le joueur j + */ + public void utiliser(Joueur j) { + Pioche p = (Pioche) j.choisir(pioches); + Carte c = p.piocher(); + c.utiliser(j); + } + + public void setPioches(List pioches) { + this.pioches = pioches; + } +} diff --git a/src/carte/CarteLieuType.java b/src/carte/CarteLieuType.java index 02d1324..8982607 100644 --- a/src/carte/CarteLieuType.java +++ b/src/carte/CarteLieuType.java @@ -2,6 +2,7 @@ package carte; import java.awt.Point; +import carte.CartePiochable.Type; import main.Joueur; import main.Pioche; @@ -15,19 +16,34 @@ public class CarteLieuType extends CarteLieu{ private CartePiochable.Type type; + public CarteLieuType(Type type, Point point) { + super("","",point); + this.setType(type); + } + public CarteLieuType(CartePiochable.Type type,String name, String description ,Point coordinates,Pioche pioche) { super(name , description , coordinates); - this.type = type; + this.setType(type); this.pioche = pioche; } + /* * @param j Appel la méthode utiliser de effet sur le joueur j */ public void utiliser(Joueur j) { - CartePiochable carte = pioche.piocher(); carte.utiliser(j); } + public void setPioche(Pioche p) { + this.pioche = p; + } + public CartePiochable.Type getType() { + return type; + } + public void setType(CartePiochable.Type type) { + this.type = type; + } + } diff --git a/src/database/CreatingCardsTest.java b/src/database/CreatingCardsTest.java index 0103bf8..db5e5ef 100644 --- a/src/database/CreatingCardsTest.java +++ b/src/database/CreatingCardsTest.java @@ -1,9 +1,13 @@ package database; +import java.awt.Point; import java.io.IOException; import java.sql.SQLException; import carte.CarteEquipementStat; +import carte.CarteLieu; +import carte.CarteLieuMultiple; +import carte.CarteLieuType; import carte.CartePiochable; import condition.ConditionClassPersonnage; import condition.ConditionEquipe; @@ -21,9 +25,6 @@ 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; @@ -44,6 +45,7 @@ public class CreatingCardsTest { //Ange gardien try { + /* DatabaseManager.queryInsertObject(2,new CartePiochable(CartePiochable.Type.LUMIERE, new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_IMMUNITY, 1, true)))); @@ -237,10 +239,47 @@ public class CreatingCardsTest { DatabaseManager.queryInsertObject(55,new LoupGarou()); DatabaseManager.queryInsertObject(56,new Metamorphe()); DatabaseManager.queryInsertObject(57,new Vampire()); + + */ + //62 + + + //CarteLieu lieu1 = new CarteLieuType(CartePiochable.Type.VISION,new Point(2,3)); + + DatabaseManager.queryInsertObject(62,new CarteLieuType(CartePiochable.Type.VISION,new Point(2,3))); + + //63 + CarteLieu lieu2 = new CarteLieuType(CartePiochable.Type.TENEBRE,new Point(-1,8)); + + DatabaseManager.queryInsertObject(63,lieu2); + + // 64 + CarteLieu lieu3 = new CarteLieu(new Point(-1,9)); + lieu3.setEffet(new EffetChoisirEffet(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-2,true)), + + + new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,1,true)))); + + DatabaseManager.queryInsertObject(64,lieu3); + // 65 + CarteLieu lieu4 = new CarteLieuType(CartePiochable.Type.LUMIERE,new Point(-1,6)); + + DatabaseManager.queryInsertObject(65,lieu4); + + CarteLieu lieu5 = new CarteLieuMultiple(new Point(4,5)); + + DatabaseManager.queryInsertObject(66,lieu5); + // 66 + CarteLieu lieu6 = new CarteLieu(new Point(-1,9)); + lieu6.setEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))); + + DatabaseManager.queryInsertObject(67,lieu6); + } catch (IOException | SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } -} + } + diff --git a/src/database/DatabaseManager.java b/src/database/DatabaseManager.java index 41084a4..a4480e8 100644 --- a/src/database/DatabaseManager.java +++ b/src/database/DatabaseManager.java @@ -85,6 +85,8 @@ public class DatabaseManager { table = QueryGenerator.getTable("CartesPersonnage"); } else if(id <= 61) { table = QueryGenerator.getTable("CartesDos"); + } else if(id <= 67) { + table = QueryGenerator.getTable("CartesLieu"); } String query = null; diff --git a/src/database/RessourceLoader.java b/src/database/RessourceLoader.java index fe42aba..a5e9154 100644 --- a/src/database/RessourceLoader.java +++ b/src/database/RessourceLoader.java @@ -5,12 +5,15 @@ import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.ObjectInputStream; +import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; import javax.imageio.ImageIO; import carte.Carte; +import carte.CarteLieu; import carte.CartePiochable; import personnage.CartePersonnage; @@ -32,16 +35,16 @@ public class RessourceLoader { private final int ID_DOS_TENEBRE= 59; private final int ID_DOS_VISION= 61; - private Map> ressourcesCartes; + private Map ressourcesCartes; private Map ressourcesDosCartes; public RessourceLoader() { - this.ressourcesCartes = new HashMap>(); + this.ressourcesCartes = new HashMap(); this.ressourcesDosCartes = new HashMap(); } - private static Map loadCards() throws ClassNotFoundException, IOException{ + private Map loadCards() throws ClassNotFoundException, IOException{ Table t = new Table(); Map cartes = new HashMap(); @@ -60,7 +63,7 @@ public class RessourceLoader { return cartes; } - private static Map getMapType(CartePiochable.Type t, Map cartes){ + private Map getMapType(CartePiochable.Type t, Map cartes){ Map cartesType = new HashMap(); @@ -80,7 +83,7 @@ public class RessourceLoader { return cartesType; } - private static Map getMapPersonnage(Map cartes){ + private Map getMapPersonnage(Map cartes){ Map cartesPersonnage = new HashMap(); @@ -102,15 +105,14 @@ public class RessourceLoader { return is.readObject(); } - private static Image loadImage(int id) throws IOException { + private Image loadImage(int id) throws IOException { String name = ""+id+".png"; String url = "ressources/cartes/"+name; - System.out.println(url); Image picture = ImageIO.read(new File(url)); return picture; } - private static Map getMapImageCarte(Map cartes) throws IOException{ + private Map getMapImageCarte(Map cartes) throws IOException{ Map mapCarteImage = new HashMap(); @@ -123,8 +125,7 @@ public class RessourceLoader { return mapCarteImage; } - - + public void loadRessources() { try { @@ -134,17 +135,14 @@ public class RessourceLoader { Map mapL = getMapType(CartePiochable.Type.LUMIERE, cartes); Map mapV = getMapType(CartePiochable.Type.VISION, cartes); Map mapP = getMapPersonnage(cartes); - + /* Map mapIT = getMapImageCarte(mapT); - Map mapIL = getMapImageCarte(mapT); - Map mapIV = getMapImageCarte(mapT); - Map mapIP = getMapImageCarte(mapT); + Map mapIL = getMapImageCarte(mapL); + Map mapIV = getMapImageCarte(mapV); + Map mapIP = getMapImageCarte(mapP); + */ - - this.ressourcesCartes.put(CARTES_TENEBRE, mapIT); - this.ressourcesCartes.put(CARTES_LUMIERE, mapIL); - this.ressourcesCartes.put(CARTES_LUMIERE, mapIV); - this.ressourcesCartes.put(CARTES_LUMIERE, mapIP); + this.ressourcesCartes = (getMapImageCarte(cartes)); this.ressourcesDosCartes.put(DOS_TENEBRE, loadImage(ID_DOS_TENEBRE)); this.ressourcesDosCartes.put(DOS_LUMIERE, loadImage(ID_DOS_LUMIERE)); @@ -155,11 +153,59 @@ public class RessourceLoader { e.printStackTrace(); } } - - public static void main(String[] args) { - RessourceLoader rl = new RessourceLoader(); - rl.loadRessources(); + + public List getCartes() { + return new ArrayList(this.ressourcesCartes.keySet()); } + public static List getCartesType(CartePiochable.Type t, List cartes){ + + List cartesType = new ArrayList(); + + for(Carte c : cartes) { + + + if(c instanceof CartePiochable) { + + CartePiochable carte = (CartePiochable) c; + + CartePiochable.Type type = carte.getType(); + if(t == type) { + cartesType.add(carte); + } + } + } + return cartesType; + } + + public static List getCartesType(List cartes){ + + List cartesLieu = new ArrayList(); + + for(Carte c : cartes) { + + if(c instanceof CarteLieu) { + + CarteLieu carte = (CarteLieu) c; + cartesLieu.add(carte); + } + } + return cartesLieu; + } + + public static List getCartesPersonnages(List cartes) { + List cartesLieu = new ArrayList(); + + for(Carte c : cartes) { + + if(c instanceof CartePersonnage) { + + CartePersonnage carte = (CartePersonnage) c; + cartesLieu.add(carte); + } + } + return cartesLieu; + } + } diff --git a/src/effet/action/ActionVoler.java b/src/effet/action/ActionVoler.java index af389f7..e793038 100644 --- a/src/effet/action/ActionVoler.java +++ b/src/effet/action/ActionVoler.java @@ -38,7 +38,7 @@ public class ActionVoler extends Action{ List equipements = j2.getEquipements(); // J1 choisit quel équipement voler - CarteEquipement equipement = j1.choisir(equipements); + CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements); j1.voler(j2,equipement); }else { @@ -46,7 +46,7 @@ public class ActionVoler extends Action{ List equipements = j1.getEquipements(); // J1 choisit quel équipement voler - CarteEquipement equipement = j1.choisir(equipements); + CarteEquipement equipement = (CarteEquipement) j1.choisir(equipements); j2.voler(j1,equipement); diff --git a/src/ihm/Main.java b/src/ihm/Main.java index 6f9f30e..1d65e3b 100644 --- a/src/ihm/Main.java +++ b/src/ihm/Main.java @@ -20,7 +20,7 @@ public class Main extends Application { final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE); final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle); Pane root = fxmlLoader.load(); - + primaryStage.setTitle("Shadow Hunters"); primaryStage.setScene(new Scene(root)); primaryStage.centerOnScreen(); @@ -35,8 +35,13 @@ public class Main extends Application { } public static void main(String[] args) { - //System.err.close(); + GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu(); + /* + RessourceLoader rl = new RessourceLoader(); + rl.loadRessources(); + gj.setRessourceLoader(rl); + */ launch(args); } } \ No newline at end of file diff --git a/src/ihm/ZoneJoueurThread.java b/src/ihm/ZoneJoueurThread.java deleted file mode 100644 index c196f6e..0000000 --- a/src/ihm/ZoneJoueurThread.java +++ /dev/null @@ -1,22 +0,0 @@ -package ihm; - -import javafx.scene.layout.AnchorPane; -import javafx.scene.layout.Pane; - -public class ZoneJoueurThread extends Thread { - - private boolean finished; - - - - public ZoneJoueurThread(AnchorPane anchorPane, Pane pane) { - this.finished = false; - } - - public void run() { - while(!finished) { - - } - - } -} diff --git a/src/ihm/controller/GestionnaireDePions.java b/src/ihm/controller/GestionnaireDePions.java index d47587c..dd44d71 100644 --- a/src/ihm/controller/GestionnaireDePions.java +++ b/src/ihm/controller/GestionnaireDePions.java @@ -1,11 +1,13 @@ package ihm.controller; import carte.CarteLieu; +import javafx.animation.TranslateTransition; import javafx.scene.layout.FlowPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.StackPane; import javafx.scene.paint.Color; +import javafx.util.Duration; import main.Joueur; public class GestionnaireDePions { @@ -33,9 +35,18 @@ public class GestionnaireDePions { FlowPane fpAncient = (FlowPane) nAncient.getChildren().get(0); fpAncient.getChildren().remove(pionVie); + System.out.println(damage); + if(damage < 0) { + damage = 0; + }else if(damage > gp.getChildren().size()-1) { + damage = gp.getChildren().size()-1; + } StackPane nNew = (StackPane) gp.getChildren().get(damage); FlowPane fpNew = (FlowPane) nNew.getChildren().get(0); + fpNew.getChildren().add(pionVie); + + } public void deplacerPionLieux(Joueur j) { @@ -56,9 +67,21 @@ public class GestionnaireDePions { StackPane sp = (StackPane) hbox.getChildren().get(indexCL%2); FlowPane fp = (FlowPane) sp.getChildren().get(0); - fp.getChildren().add(this.pionLieu); - + + fp.getChildren().add(this.pionLieu); } + + public void animationDeplacer(double x, double y, Pion p) { + + + TranslateTransition translate = new TranslateTransition(); + + translate.setByX(x); + translate.setByY(y); + translate.setDuration(Duration.millis(2000)); + translate.setNode(p); + translate.play(); + } } diff --git a/src/ihm/controller/PlateauController.java b/src/ihm/controller/PlateauController.java index 84e6c05..0dbadb2 100644 --- a/src/ihm/controller/PlateauController.java +++ b/src/ihm/controller/PlateauController.java @@ -291,8 +291,8 @@ public class PlateauController implements Initializable { } public void updateVieJoueur(Joueur joueur, int damage) { - /*JoueurIHM jIHM = getJoueurIHM(joueur); - jIHM.deplacerPionVie(damage);*/ + JoueurIHM jIHM = getJoueurIHM(joueur); + jIHM.deplacerPionVie(damage); } diff --git a/src/ihm/ressources/Menu.fxml b/src/ihm/ressources/Menu.fxml index 7e50725..7d4241e 100644 --- a/src/ihm/ressources/Menu.fxml +++ b/src/ihm/ressources/Menu.fxml @@ -9,44 +9,32 @@ - + - + - - - - diff --git a/src/main/GestionnaireJeu.java b/src/main/GestionnaireJeu.java index 2fb883d..3647a93 100644 --- a/src/main/GestionnaireJeu.java +++ b/src/main/GestionnaireJeu.java @@ -8,6 +8,7 @@ import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.FutureTask; +import database.RessourceLoader; import effet.Effet; import ihm.controller.PlateauController; import javafx.application.Platform; @@ -17,6 +18,8 @@ public class GestionnaireJeu { private static GestionnaireJeu gj; private Map mapJoueurs; + + private RessourceLoader ressourceLoader; private static Plateau plateau; private static PlateauController pc; @@ -38,15 +41,6 @@ public class GestionnaireJeu { public void lancerPartie() { plateau.start(); } - - public void jouer(Configuration c) { - - } - - public static Configuration lancerConfiguration() { - //TODO - return null; - } public Joueur choisirParmisTous(Joueur joueur, List joueurs) { return joueurs.get(0); @@ -68,6 +62,13 @@ public class GestionnaireJeu { }); } + public void updateVieJoueur(Joueur joueur, int damage) { + + Platform.runLater(() -> { + pc.updateVieJoueur(joueur, damage); + }); + } + public boolean choisir(Joueur joueur) { Platform.runLater(() -> { @@ -132,8 +133,8 @@ public class GestionnaireJeu { for(Joueur j : mapJoueurs.values()) { joueurs.add(j); } - plateau = new Plateau(joueurs); + //plateau = new Plateau(joueurs,ressourceLoader.getCartes()); } @@ -151,15 +152,14 @@ public class GestionnaireJeu { } - public void updateVieJoueur(Joueur joueur, int damage) { - pc.updateVieJoueur(joueur, damage); - - } - public static void endGame() { plateau.stop(); } + public void setRessourceLoader(RessourceLoader rl) { + this.ressourceLoader = rl; + } + diff --git a/src/main/Joueur.java b/src/main/Joueur.java index 97824a6..7bd0cb2 100644 --- a/src/main/Joueur.java +++ b/src/main/Joueur.java @@ -4,8 +4,9 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import carte.CarteLieu; +import carte.Carte; import carte.CarteEquipement; +import carte.CarteLieu; import effet.Effet; import personnage.CartePersonnage; import personnage.CartePersonnage.Equipe; @@ -64,6 +65,9 @@ public class Joueur { return this.cartePersonnage.getEquipe(); } + private void changeStat(String key, int valeur) { + this.stats.put(key, valeur); + } public void setStat(String key, int valeur) { this.stats.put(key, valeur); updateVictoirePlateau(); @@ -87,10 +91,10 @@ public class Joueur { private void updateVie() { int damage = damageTaken(); this.plateau.updateVieJoueur(this, damage); - } public int damageTaken() { + System.out.println(this.cartePersonnage.getPv()+ " "+this.getStat(PLAYER_HP)); return this.cartePersonnage.getPv() - this.getStat(PLAYER_HP); } @@ -130,7 +134,7 @@ public class Joueur { j2.gestionnaireEquipements.retirer(equipement); this.gestionnaireEquipements.ajouter(equipement); } - public CarteEquipement choisir(List equipements) { + public Object choisir(List equipements) { return null; } @@ -193,6 +197,7 @@ public class Joueur { public void setCartePersonnage(CartePersonnage cp) { this.cartePersonnage = cp; + this.changeStat(PLAYER_HP, cp.getPv()); } public void setPlateau(Plateau plateau2) { diff --git a/src/main/Pioche.java b/src/main/Pioche.java index 6372d06..082f6ab 100644 --- a/src/main/Pioche.java +++ b/src/main/Pioche.java @@ -9,26 +9,22 @@ import carte.CartePiochable; public class Pioche { private Stack cartesPiochables; - private CartePiochable.Type type; - public Pioche(List cartesPiochables) { - - } - - public Pioche(CartePiochable.Type type, List list1) { + public Pioche(List list1) { super(); - this.type = type; this.cartesPiochables = new Stack(); - this.cartesPiochables.addAll(cartesPiochables); + this.cartesPiochables.addAll(list1); melanger(); } + + public void melanger() { Collections.shuffle(cartesPiochables); } - public CartePiochable piocher() { + public CartePiochable piocher() { return cartesPiochables.pop(); } } diff --git a/src/main/Plateau.java b/src/main/Plateau.java index ee3a827..6ae1618 100644 --- a/src/main/Plateau.java +++ b/src/main/Plateau.java @@ -7,9 +7,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import carte.Carte; import carte.CarteLieu; +import carte.CarteLieuMultiple; import carte.CarteLieuType; import carte.CartePiochable; +import database.RessourceLoader; import effet.Effet; import effet.EffetChoisirCible; import effet.EffetChoisirEffet; @@ -121,6 +124,66 @@ public class Plateau extends Thread{ } + public Plateau(List joueurs, List cartes) { + + this.gj = GestionnaireJeu.getGestionnaireJeu(); + this.lieux = new ArrayList<>(); + this.stats = new HashMap<>(); + + this.joueurs = joueurs; + + this.stats.put(NB_MORTS, 0); + this.stats.put(NB_MORTS_NEUTRAL, 0); + this.stats.put(NB_MORTS_HUNTER, 0); + this.stats.put(NB_MORTS_SHADOW, 0); + this.stats.put(PARTIE_FINIE, 0); + this.stats.put(NB_HUNTERS, 0); + this.stats.put(NB_SHADOWS, 0); + this.stats.put(NB_NEUTRES, 0); + + + joueurs.forEach(x -> x.setPlateau(this)); + + + List lumiere = RessourceLoader.getCartesType(CartePiochable.Type.LUMIERE, cartes); + List tenebre = RessourceLoader.getCartesType(CartePiochable.Type.TENEBRE, cartes); + List vision = RessourceLoader.getCartesType(CartePiochable.Type.VISION, cartes); + + Map> map = new HashMap>(); + map.put(CartePiochable.Type.LUMIERE,lumiere); + map.put(CartePiochable.Type.TENEBRE,tenebre); + map.put(CartePiochable.Type.VISION,vision); + + List lieux = RessourceLoader.getCartesType(cartes); + + lieux.forEach(x -> { + + if(x instanceof CarteLieuType) { + CarteLieuType clt = (CarteLieuType)x; + clt.setPioche(new Pioche(map.get(clt.getType()))); + } + + if(x instanceof CarteLieuMultiple) { + CarteLieuMultiple clm = (CarteLieuMultiple)x; + + List lp = new ArrayList(); + lp.add(new Pioche(map.get(CartePiochable.Type.LUMIERE))); + lp.add(new Pioche(map.get(CartePiochable.Type.TENEBRE))); + lp.add(new Pioche(map.get(CartePiochable.Type.VISION))); + clm.setPioches(lp); + } + }); + + + List personnages = RessourceLoader.getCartesPersonnages(cartes); + + try { + initCartePersonnage(personnages); + } catch (Exception e) { + + } + setLieux(lieux); + } public void initCartePersonnage(List cps) throws Exception { @@ -211,12 +274,7 @@ public class Plateau extends Thread{ System.out.println("Vous passez a "+currentJoueur.getStat(Joueur.PLAYER_HP)+" pv"); if(isPartieTerminee()) break; } - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + System.out.println("\n"); System.out.println("Souhaitez vous attaquer quelqu'un ?"); @@ -229,12 +287,6 @@ public class Plateau extends Thread{ System.out.println("Il n'y a personne a attaquer."); } - try { - Thread.sleep(2000); - } catch (InterruptedException e) { - - e.printStackTrace(); - } } i++; diff --git a/tests/main/PlateauTest.java b/tests/main/PlateauTest.java index 02390fe..ddd6aa6 100644 --- a/tests/main/PlateauTest.java +++ b/tests/main/PlateauTest.java @@ -69,8 +69,8 @@ class PlateauTest { } - Pioche piocheLumiere = new Pioche(CartePiochable.Type.LUMIERE,list1); - Pioche piocheTenebre = new Pioche(CartePiochable.Type.TENEBRE,list2); + Pioche piocheLumiere = new Pioche(list1); + Pioche piocheTenebre = new Pioche(list2); CarteLieu lieu1 = new CarteLieuType(CartePiochable.Type.TENEBRE,"Antre de l'Ermite","desc",new Point(2,3),piocheTenebre);