Ajout des cartes équipement

This commit is contained in:
Paul Gross 2020-05-13 15:13:50 +02:00
parent 1f6ee979a1
commit f7df74eb46
17 changed files with 134 additions and 94 deletions

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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)));

View File

@ -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";
private static Connection connection;
public static Connection connect() throws SQLException {
return DriverManager.getConnection(url, user, password);
}
public static void connect() throws SQLException {
if(connection == null || connection.isClosed()) {
connection = DriverManager.getConnection(url, user, password);
}
}
public static List<Record> remplirTable(String query) {
List<Record> list = new ArrayList<Record>();
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<Record> remplirTableSansImage(String query) {
List<Record> list = new ArrayList<Record>();
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();

View File

@ -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);

View File

@ -32,20 +32,23 @@ public class ActionVoler extends Action{
@Override
public void affecte(Joueur j1, Joueur j2) {
if(this.choix) {
List<CarteEquipement> equipements = j2.getEquipements();
List<CarteEquipement> 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<CarteEquipement> equipements = j2.getEquipements();
// J1 choisit quel équipement voler
CarteEquipement equipement = (CarteEquipement) j2.choisir(equipements,CarteEquipement.class);
j1.voler(j2,equipement);
}
}
}

View File

@ -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() {

View File

@ -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<CarteEquipement> equipements = new ArrayList<CarteEquipement>();
private CarteEquipement equipementSelected;
@Override
public void initialize(URL arg0, ResourceBundle arg1) {
for (int i=0; i<equipements.size(); i++) {
ImageView carte = (ImageView) grilleEquipement.getChildren().get(i);
/*InputStream input = getClass().getResourceAsStream("/ihm/ressources/img/" + "nomcarte" + ".png");
Image image = new Image(input);
carte.setImage(image);*/
int numEquipement = i;
carte.setOnMouseClicked(e -> {
equipementSelected = equipements.get(numEquipement);
});
}
}
public List<CarteEquipement> getEquipements() {
@ -61,4 +53,24 @@ public class ChoisirEquipement implements Initializable{
return equipementSelected;
}
public void setListCarteEquipements(List<CarteEquipement> 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();
});
}
}
}

View File

@ -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<ImageView> liv = new ArrayList<ImageView>();
for(Iterator<Node> 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() {

View File

@ -58,8 +58,8 @@ public class PlateauController implements Initializable {
private PiocherCarte pc;
private LancerDes ld;
private Map<Carte,BufferedImage> mapRessourcesCartes;
private Map<String,BufferedImage> mapRessourcesDosCartes;
private static Map<Carte,BufferedImage> mapRessourcesCartes;
private static Map<String,BufferedImage> mapRessourcesDosCartes;
public static int DICE_SIX = 1;
public static int DICE_QUATRE = 0;
@ -347,12 +347,14 @@ public class PlateauController implements Initializable {
}
public void afficherChoisirEquipementVole(Joueur j) throws IOException {
public void afficherChoisirEquipementVole(Joueur j, List<CarteEquipement> lce) throws IOException {
final URL fxmlURL = getClass().getResource("/ihm/ressources/Jouer_tour(2a)voler_equipement.fxml");
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane root = (Pane)fxmlLoader.load();
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 {

View File

@ -1,27 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.VBox?>
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="210.0" prefWidth="260.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirEquipement">
<AnchorPane stylesheets="@style/plateau.css" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ihm.controller.ChoisirEquipement">
<children>
<Pane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" stylesheets="@style/popUp.css" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<VBox alignment="CENTER" spacing="10.0" styleClass="background" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<children>
<Label layoutX="58.0" layoutY="14.0" text="%voler.equipement.joueur" />
<ScrollPane layoutX="28.0" layoutY="38.0">
<Label alignment="CENTER" contentDisplay="CENTER" styleClass="text" text="%voler.equipement.joueur" />
<ScrollPane fx:id="scrollpane" fitToHeight="true" fitToWidth="true" prefHeight="144.0" prefWidth="144.0" vbarPolicy="NEVER" VBox.vgrow="SOMETIMES">
<content>
<HBox>
<children>
<ImageView fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" />
</children>
</HBox>
<HBox fx:id="hbox" styleClass="background" />
</content>
</ScrollPane>
</children>
</Pane>
<padding>
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
</padding>
</VBox>
</children>
</AnchorPane>

View File

@ -29,9 +29,6 @@ public class GestionnaireEquipements {
this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, -1);
this.j.removeEquipementIHM(e);
}
}
public List<CarteEquipement> getEquipements() {

View File

@ -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<CarteEquipement>) list);
}else if(cls == Joueur.class) {
return choisirJoueur(joueur, (List<Joueur>) list, Contexte.ACTIVER_EFFET_LIEU);
}
return list.get(0);
@ -126,7 +123,7 @@ public class GestionnaireJeu {
public CarteEquipement choisirEquipementVole(Joueur joueur, List<CarteEquipement> lce) {
Platform.runLater(() -> {
try {
pc.afficherChoisirEquipementVole(joueur);
pc.afficherChoisirEquipementVole(joueur,lce);
} catch (IOException e) {
e.printStackTrace();
}

View File

@ -128,11 +128,9 @@ 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) {

View File

@ -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<CartePiochable> getStack() {

View File

@ -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);
}