Création des cartes lumières pour insertion dans la bdd

This commit is contained in:
Paul Gross 2020-05-05 15:28:51 +02:00
parent 8952512b3e
commit f8be85ad5e
24 changed files with 316 additions and 67 deletions

View File

@ -13,12 +13,19 @@ public abstract class CarteCondition extends CarteEffet implements Serializable{
*/
private static final long serialVersionUID = 903022795821166067L;
public CarteCondition() {
super("","");
this.condition = new Condition();
}
public CarteCondition(String nom, String description) {
super(nom, description);
}
private Condition condition;

View File

@ -14,11 +14,14 @@ public abstract class CarteEffet extends Carte implements Serializable{
private static final long serialVersionUID = -5248405395465365805L;
private Effet effet;
public CarteEffet(String nom, String description) {
super(nom, description);
}
/*
* @param j Appel la méthode utiliser de effet sur le joueur j
*/

View File

@ -4,10 +4,14 @@ import main.Joueur;
import main.Type;
public abstract class Equipement extends CartePiochable<Type>{
public abstract class CarteEquipement<T extends Type> extends CartePiochable<Type>{
/**
*
*/
private static final long serialVersionUID = 7537771209935892801L;
public Equipement(String nom, String description) {
public CarteEquipement(String nom, String description) {
super(nom, description);
// TODO Auto-generated constructor stub
}

View File

@ -0,0 +1,31 @@
package carte;
import condition.Condition;
import effet.Effet;
import effet.action.ActionAltererStatistiquesJoueur;
import main.Joueur;
import main.Type;
public class CarteEquipementStat<T extends Type> extends CarteEquipement<Type>{
/**
*
*/
private static final long serialVersionUID = 1602387056611454284L;
public CarteEquipementStat(String nom, String description) {
super(nom, description);
}
public CarteEquipementStat(Effet effet, Condition condition) {
super("","");
this.setEffet(effet);
this.setCondition(condition);
}
@Override
public void reverse(Joueur j) {
ActionAltererStatistiquesJoueur action = ((ActionAltererStatistiquesJoueur) this.getEffet().getAction()).getReverseAction();
action.affecte(j, j);
}
}

View File

@ -4,6 +4,8 @@ import java.io.Serializable;
import condition.Condition;
import effet.Effet;
import effet.EffetChoisirCible;
import effet.EffetSelf;
import main.Joueur;
import main.Type;
@ -17,11 +19,17 @@ public class CartePiochable<T extends Type> extends CarteCondition implements Se
}
public CartePiochable(Effet e, Condition c) {
super("","");
super();
this.setEffet(e);
this.setCondition(c);
}
public CartePiochable(Effet effet) {
super();
this.setEffet(effet);
this.setCondition(new Condition());
}
/*
* @param j Appel la méthode utiliser de effet sur le joueur j
*/

View File

@ -1,17 +0,0 @@
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

@ -1,6 +1,7 @@
package condition;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import main.Joueur;
@ -9,6 +10,10 @@ import personnage.CartePersonnage;
public class ConditionClassPersonnage extends Condition{
/**
*
*/
private static final long serialVersionUID = -2298344287059138254L;
private List<Class<? extends CartePersonnage>> classes;
@ -21,7 +26,6 @@ public class ConditionClassPersonnage extends Condition{
* @param classes Les Class des différents Personnage's.
*/
public ConditionClassPersonnage(List<Class<? extends CartePersonnage>> classes){
this.classes = new ArrayList<Class<? extends CartePersonnage>>();
this.classes.addAll(classes);
}
@ -29,6 +33,14 @@ public class ConditionClassPersonnage extends Condition{
public ConditionClassPersonnage(Class<? extends CartePersonnage>...classes) {
this.classes = new ArrayList<Class<? extends CartePersonnage>>();
this.classes.addAll(Arrays.asList(classes));
}
/**
* Vérifie qu'il existe au moins une classe qui correspond au Personnage du Joueur.
* <br><br>

View File

@ -1,6 +1,7 @@
package condition;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import main.Joueur;
@ -15,6 +16,11 @@ public class ConditionMultiple extends Condition {
this.conditions.addAll(conditions);
}
public ConditionMultiple(Condition...conditions) {
this.conditions = new ArrayList<Condition>();
this.conditions.addAll(Arrays.asList(conditions));
}
/**
* Vérifie que toutes les conditions soient vraies
* @param joueur Le joueur sur lequel on vérifie les conditions.

View File

@ -0,0 +1,16 @@
package condition;
import main.Joueur;
public class ConditionReveal extends Condition {
/**
*
*/
private static final long serialVersionUID = -7476657033160343165L;
public boolean isTrue(Joueur joueur) {
return joueur.getRevele();
}
}

View File

@ -5,12 +5,22 @@ import java.util.List;
import main.Joueur;
import personnage.CartePersonnage;
import personnage.CartePersonnage.Equipe;
public class ConditionType extends Condition{
/**
*
*/
private static final long serialVersionUID = 8261153600401164649L;
private List<CartePersonnage.Equipe> equipes;
public ConditionType(Equipe e) {
this.equipes = new ArrayList<CartePersonnage.Equipe>();
this.equipes.add(e);
}
public ConditionType(List<CartePersonnage.Equipe> equipes){
this.equipes = new ArrayList<CartePersonnage.Equipe>();
@ -20,6 +30,11 @@ public class ConditionType extends Condition{
/**
* Vérifie qu'il existe au moins une classe qui correspond à l'équipe du Joueur.
* <br><br>

View File

@ -0,0 +1,107 @@
package database;
import carte.CarteEquipementStat;
import carte.CartePiochable;
import condition.Condition;
import condition.ConditionClassPersonnage;
import condition.ConditionMultiple;
import condition.ConditionReveal;
import condition.ConditionType;
import effet.EffetChoisirCible;
import effet.EffetCiblerTous;
import effet.EffetSelf;
import effet.action.Action;
import effet.action.ActionAltererStatistiquesJoueur;
import effet.action.ActionAltererStatistiquesJoueurRoll;
import effet.action.ActionMultiple;
import effet.action.ActionReveal;
import main.Joueur;
import main.TypeLumiere;
import personnage.Allie;
import personnage.CartePersonnage;
import personnage.Emi;
import personnage.LoupGarou;
import personnage.Metamorphe;
import personnage.Vampire;
public class CreatingCardsTest {
public static void main(String[] args) {
// Lumière
//Ange gardien
insert(2,new CartePiochable<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_IMMUNITY, 1, true))));
//Avénement suprême
insert(3,new CartePiochable<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true))
,new ConditionMultiple(new ConditionType(CartePersonnage.Equipe.HUNTER), new ConditionReveal())
));
//Barre de chocolat
insert(4,new CartePiochable<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true))
,new ConditionMultiple(new ConditionClassPersonnage(Allie.class,Emi.class,Metamorphe.class), new ConditionReveal())
));
//Bénédiction
insert(5,new CartePiochable<TypeLumiere>(new EffetChoisirCible(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,6, true))));
// BOUSSOLE mystique
// 6
// 7
// 8
// Eau bénite
insert(9,new CartePiochable<TypeLumiere>(new EffetSelf(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,2, true))));
insert(10,new CartePiochable<TypeLumiere>(new EffetSelf(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,2, true))));
// Eclair purificateur
insert(11,new CartePiochable<TypeLumiere>(new EffetCiblerTous(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP, -2, true))));
// Lance de longinus
insert(12,new CarteEquipementStat<TypeLumiere>(
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true))
,new ConditionMultiple(new ConditionType(CartePersonnage.Equipe.HUNTER), new ConditionReveal())
));
// Miroir divin
insert(13,new CartePiochable<TypeLumiere>(new EffetSelf(new ActionReveal()),new ConditionClassPersonnage(Vampire.class,LoupGarou.class)));
// Premiers secours
insert(14, new CartePiochable<TypeLumiere>(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 7, false))));
//Savoir ancestral
insert(15, new CartePiochable<TypeLumiere>(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_TURN, 1, true))));
//Toge sainte
insert(16, new CartePiochable<TypeLumiere>(new EffetSelf(new ActionMultiple(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_RESISTANCE, 1, true),new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, -1, true)))));
}
public static void insert(int row, Object obj) {
}
}

View File

@ -21,12 +21,10 @@ import main.Joueur;
public class TestAddingCard {
private final static String url = "jdbc:postgresql://localhost:5432/ShadowHunterDatabase";
private final static String user = "shManager";
private final static String password = "shadowhunter1234";
public static void main(String[] args) {
CartePiochable<?> instance = new CartePiochable(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true)), new Condition());
@ -35,10 +33,8 @@ public class TestAddingCard {
insertCartePiochable(instance);
System.out.println(retrieveCartePiochable(0).getEffet());
} catch (IOException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@ -85,6 +81,4 @@ public class TestAddingCard {
return (CartePiochable<?>) is.readObject();
}
}

View File

@ -2,6 +2,10 @@ package effet.action;
import main.Joueur;
public class ActionAltererStatistiquesJoueur extends Action{
/**
*
*/
private static final long serialVersionUID = 9119524110079268363L;
private String key;
private int valeur;
private boolean ajouter;
@ -49,4 +53,8 @@ public class ActionAltererStatistiquesJoueur extends Action{
public ActionAltererStatistiquesJoueur getReverseAction() {
return new ActionAltererStatistiquesJoueur(key, -valeur, true);
}
public void setValeur(int valeur) {
this.valeur = valeur;
}
}

View File

@ -0,0 +1,36 @@
package effet.action;
import main.Joueur;
import main.Plateau;
public class ActionAltererStatistiquesJoueurRoll extends ActionAltererStatistiquesJoueur {
/**
*
*/
private static final long serialVersionUID = -6614964982752647505L;
private int valeurRoll;
public ActionAltererStatistiquesJoueurRoll(String key, int valeurRoll, boolean ajouter) {
super(key, 0, ajouter);
this.valeurRoll = valeurRoll;
}
@Override
public void affecte(Joueur j1, Joueur j2) {
Plateau p = j1.getPlateau();
int roll;
if(this.valeurRoll == 6) {
roll = p.roll6(j1);
}else {
roll = p.roll4(j1);
}
this.setValeur(roll);
super.affecte(j1, j2);
}
}

View File

@ -1,5 +1,6 @@
package effet.action;
import java.util.Arrays;
import java.util.List;
import main.Joueur;
@ -14,6 +15,10 @@ public class ActionMultiple extends Action{
this.actions = actions;
}
public ActionMultiple(Action...actions) {
this.actions = Arrays.asList(actions);
}
/**
* Lance l'action d'activer toutes les actions contenues dans ActionMultiple.
* @param j1 Le joueur qui lance l'action

View File

@ -0,0 +1,17 @@
package effet.action;
import main.Joueur;
public class ActionReveal extends Action {
/**
*
*/
private static final long serialVersionUID = 7972405763634156578L;
@Override
public void affecte(Joueur j1, Joueur j2) {
j2.reveal();
}
}

View File

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

View File

@ -17,7 +17,7 @@ public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
final URL fxmlURL = getClass().getResource("ressources/Jouer_tour(1)lancer_des.fxml"); // "ressources/Jouer_tour(1)lancer_des.fxml"
final URL fxmlURL = getClass().getResource("ressources/Menu.fxml"); // "ressources/Jouer_tour(1)lancer_des.fxml"
final ResourceBundle bundle = ResourceBundle.getBundle("domaine.properties.langue", Locale.FRANCE);
final FXMLLoader fxmlLoader = new FXMLLoader(fxmlURL, bundle);
Pane root = fxmlLoader.load();
@ -39,7 +39,5 @@ public class Main extends Application {
//System.err.close();
GestionnaireJeu gj = GestionnaireJeu.getGestionnaireJeu();
launch(args);
}
}

View File

@ -52,7 +52,6 @@ public class GestionnaireDePions {
}else {
hbox = (HBox) this.gridPaneLieux.getChildren().get(2);
}
StackPane sp = (StackPane) hbox.getChildren().get(indexCL%2);

View File

@ -3,25 +3,25 @@ package main;
import java.util.ArrayList;
import java.util.List;
import carte.Equipement;
import carte.CarteEquipement;
public class GestionnaireEquipements {
private Joueur j;
private List<Equipement> equipements;
private List<CarteEquipement> equipements;
public GestionnaireEquipements(Joueur j) {
this.j = j;
this.equipements = new ArrayList<Equipement>();
this.equipements = new ArrayList<CarteEquipement>();
}
public void ajouter(Equipement e) {
public void ajouter(CarteEquipement e) {
this.equipements.add(e);
e.utiliser(this.j);
this.j.addToStat(Joueur.PLAYER_NB_EQUIPEMENTS, 1);
}
public void retirer(Equipement e) {
public void retirer(CarteEquipement e) {
if(this.equipements.contains(e)) {
e.reverse(j);
this.equipements.remove(e);
@ -29,7 +29,7 @@ public class GestionnaireEquipements {
}
}
public List<Equipement> getEquipements() {
public List<CarteEquipement> getEquipements() {
return equipements;
}

View File

@ -5,7 +5,7 @@ import java.util.List;
import java.util.Map;
import carte.CarteLieu;
import carte.Equipement;
import carte.CarteEquipement;
import effet.Effet;
import personnage.CartePersonnage;
import personnage.CartePersonnage.Equipe;
@ -107,16 +107,16 @@ public class Joueur {
return joueurs;
}
public List<Equipement> getEquipements() {
public List<CarteEquipement> getEquipements() {
return this.gestionnaireEquipements.getEquipements();
}
public void voler(Joueur j2, Equipement equipement) {
public void voler(Joueur j2, CarteEquipement equipement) {
j2.gestionnaireEquipements.retirer(equipement);
this.gestionnaireEquipements.ajouter(equipement); }
public Equipement choisir(List<Equipement> equipements) {
public CarteEquipement choisir(List<CarteEquipement> equipements) {
return null;
}
@ -218,11 +218,11 @@ public class Joueur {
this.revele = b;
}
public void ajouterEquipement(Equipement equipement) {
public void ajouterEquipement(CarteEquipement equipement) {
this.gestionnaireEquipements.ajouter(equipement);
}
public void retirerEquipement(Equipement equipement) {
public void retirerEquipement(CarteEquipement equipement) {
this.gestionnaireEquipements.retirer(equipement);
}

View File

@ -3,8 +3,8 @@ package main;
import java.util.ArrayList;
import java.util.List;
import carte.Equipement;
import carte.EquipementStat;
import carte.CarteEquipement;
import carte.CarteEquipementStat;
import effet.Effet;
public class JoueurVirtuel extends Joueur {
@ -20,17 +20,17 @@ public class JoueurVirtuel extends Joueur {
}
// on privilegie les equipements qui donnent des stats
public Equipement choisirEquipement(List<Equipement> equips) {
List<Equipement> equipstat = trouverEquipStat(equips);
public CarteEquipement choisirEquipement(List<CarteEquipement> equips) {
List<CarteEquipement> equipstat = trouverEquipStat(equips);
if (equipstat.size() > 0)
return equipstat.get((int) Math.floor(Math.random() * equipstat.size()));
return equips.get((int) Math.floor(Math.random() * equips.size()));
}
public List<Equipement> trouverEquipStat(List<Equipement> equips) {
List<Equipement> res = new ArrayList<>();
for (Equipement e : equips) {
if (e instanceof EquipementStat)
public List<CarteEquipement> trouverEquipStat(List<CarteEquipement> equips) {
List<CarteEquipement> res = new ArrayList<>();
for (CarteEquipement e : equips) {
if (e instanceof CarteEquipementStat)
res.add(e);
}
return res;

View File

@ -9,7 +9,7 @@ import java.util.Random;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import carte.EquipementStat;
import carte.CarteEquipementStat;
import condition.Condition;
import effet.EffetSelf;
import effet.action.ActionAltererStatistiquesJoueur;
@ -51,7 +51,7 @@ class GestionnaireEquipementsTest {
for(int i = 0; i < 20; i++) {
EquipementStat es = new EquipementStat("AddDamage", "desc");
CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true)));
es.setCondition(new Condition());
j1.ajouterEquipement(es);
@ -67,7 +67,7 @@ class GestionnaireEquipementsTest {
for(int i = 0; i < 20; i++) {
EquipementStat es = new EquipementStat("AddDamage", "desc");
CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true)));
es.setCondition(new Condition());
j1.ajouterEquipement(es);
@ -81,7 +81,7 @@ class GestionnaireEquipementsTest {
int valeurEffet = 3;
EquipementStat es = new EquipementStat("AddDamage", "desc");
CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true)));
es.setCondition(new Condition());
j1.ajouterEquipement(es);

View File

@ -9,7 +9,7 @@ import java.util.List;
import org.junit.jupiter.api.Test;
import carte.Equipement;
import carte.CarteEquipement;
import personnage.Allie;
import personnage.CartePersonnage.Equipe;
import personnage.Franklin;
@ -238,7 +238,7 @@ public class IATest {
@Test
public void choixEquipementTest() {
//setup
List<Equipement> equips = new ArrayList<>();
List<CarteEquipement> equips = new ArrayList<>();
//TODO : pas possible d'instancier des Equipements apart des EquipementStat
}