Merge branch 'development' of https://github.com/PTE-SH/ShadowHunterGame into development

This commit is contained in:
Yessine Ben El Bey 2020-05-06 16:19:40 +02:00
commit fdf6fed74d
25 changed files with 490 additions and 317 deletions

View File

@ -1,19 +1,20 @@
package carte;
import effet.Effet;
import main.Joueur;
import main.Type;
public abstract class CarteEquipement<T extends Type> extends CartePiochable<Type>{
public abstract class CarteEquipement extends CartePiochable{
/**
*
*/
private static final long serialVersionUID = 7537771209935892801L;
public CarteEquipement(String nom, String description) {
super(nom, description);
// TODO Auto-generated constructor stub
public CarteEquipement(Type t, Effet effet) {
super(t, effet);
}
public void utiliser(Joueur j) {

View File

@ -1,12 +1,15 @@
package carte;
import effet.Effet;
import main.Joueur;
import main.Type;
public class CarteEquipementEffet<T extends Type> extends CarteEquipement<Type> {
public class CarteEquipementEffet extends CarteEquipement {
public CarteEquipementEffet(String nom, String description) {
super(nom, description);
public CarteEquipementEffet(Type t, Effet effet) {
super(t, effet);
// TODO Auto-generated constructor stub
}
/**

View File

@ -4,30 +4,28 @@ 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>{
public class CarteEquipementStat extends CarteEquipement{
public CarteEquipementStat(Type t, Effet effet) {
super(t, effet);
}
public CarteEquipementStat(Type t, Effet effet, Condition condition) {
super(t, effet);
this.setCondition(condition);
}
/**
*
*/
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);
}
public CarteEquipementStat(Effet effet) {
super("","");
this.setEffet(effet);
this.setCondition(new Condition());
}
@Override
public void reverse(Joueur j) {

View File

@ -4,24 +4,28 @@ import java.awt.Point;
import main.Joueur;
import main.Pioche;
import main.Type;
public class CarteLieuType<T extends Type> extends CarteLieu{
public class CarteLieuType extends CarteLieu{
private Pioche<T> pioche;
/**
*
*/
private static final long serialVersionUID = -497959392470353155L;
private Pioche pioche;
private CartePiochable.Type type;
public CarteLieuType(String name, String description ,Point coordinates,Pioche<T> pioche) {
public CarteLieuType(CartePiochable.Type type,String name, String description ,Point coordinates,Pioche pioche) {
super(name , description , coordinates);
this.type = 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();
CartePiochable carte = pioche.piocher();
carte.utiliser(j);
}

View File

@ -4,28 +4,33 @@ import java.io.Serializable;
import condition.Condition;
import effet.Effet;
import effet.EffetChoisirCible;
import effet.EffetSelf;
import main.Joueur;
import main.Type;
public class CartePiochable<T extends Type> extends CarteCondition implements Serializable{
public class CartePiochable extends CarteCondition implements Serializable{
private static final long serialVersionUID = 2391013233873750967L;
private Type type;
public CartePiochable(String nom, String description) {
public enum Type{
LUMIERE,
TENEBRE,
VISION
}
public CartePiochable(Type t, String nom, String description) {
super(nom, description);
}
public CartePiochable(Effet e, Condition c) {
public CartePiochable(Type t, Effet e, Condition c) {
super();
this.setEffet(e);
this.setCondition(c);
}
public CartePiochable(Effet effet) {
public CartePiochable(Type t, Effet effet) {
super();
this.type = t;
this.setEffet(effet);
this.setCondition(new Condition());
}
@ -37,4 +42,8 @@ public class CartePiochable<T extends Type> extends CarteCondition implements Se
super.utiliser(j);
}
public Type getType() {
return type;
}
}

View File

@ -1,5 +1,8 @@
package database;
import java.io.IOException;
import java.sql.SQLException;
import carte.CarteEquipementStat;
import carte.CartePiochable;
import condition.ConditionClassPersonnage;
@ -40,27 +43,26 @@ public class CreatingCardsTest {
// Lumière
//Ange gardien
insert(2,new CartePiochable<TypeLumiere>(
try {
QueryGenerator.queryInsertObject(2,new CartePiochable(CartePiochable.Type.LUMIERE,
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_IMMUNITY, 1, true))));
//Avénement suprême
insert(3,new CartePiochable<TypeLumiere>(
QueryGenerator.queryInsertObject(3,new CartePiochable(CartePiochable.Type.LUMIERE,
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true))
,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.HUNTER), new ConditionReveal())
));
//Barre de chocolat
insert(4,new CartePiochable<TypeLumiere>(
QueryGenerator.queryInsertObject(4,new CartePiochable(CartePiochable.Type.LUMIERE,
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))));
QueryGenerator.queryInsertObject(5,new CartePiochable(CartePiochable.Type.LUMIERE,new EffetChoisirCible(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,6, true))));
// BOUSSOLE mystique
@ -71,58 +73,58 @@ public class CreatingCardsTest {
// 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))));
QueryGenerator.queryInsertObject(9,new CartePiochable(CartePiochable.Type.LUMIERE,new EffetSelf(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP,2, true))));
QueryGenerator.queryInsertObject(10,new CartePiochable(CartePiochable.Type.LUMIERE,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))));
QueryGenerator.queryInsertObject(11,new CartePiochable(CartePiochable.Type.LUMIERE,new EffetCiblerTous(new ActionAltererStatistiquesJoueurRoll(Joueur.PLAYER_HP, -2, true))));
// Lance de longinus
insert(12,new CarteEquipementStat<TypeLumiere>(
QueryGenerator.queryInsertObject(12,new CarteEquipementStat(CartePiochable.Type.LUMIERE,
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 2, true))
,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.HUNTER), new ConditionReveal())
));
// Miroir divin
insert(13,new CartePiochable<TypeLumiere>(new EffetSelf(new ActionReveal()),new ConditionClassPersonnage(Vampire.class,LoupGarou.class)));
QueryGenerator.queryInsertObject(13,new CartePiochable(CartePiochable.Type.LUMIERE,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))));
QueryGenerator.queryInsertObject(14, new CartePiochable(CartePiochable.Type.LUMIERE,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))));
QueryGenerator.queryInsertObject(15, new CartePiochable(CartePiochable.Type.LUMIERE,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)))));
QueryGenerator.queryInsertObject(16, new CartePiochable(CartePiochable.Type.LUMIERE,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<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
QueryGenerator.queryInsertObject(17, new CartePiochable(CartePiochable.Type.TENEBRE,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<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
QueryGenerator.queryInsertObject(18, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true)))));
insert(19, new CartePiochable<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
QueryGenerator.queryInsertObject(19, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true)))));
insert(20, new CartePiochable<TypeTenebre>(new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
QueryGenerator.queryInsertObject(20, new CartePiochable(CartePiochable.Type.TENEBRE,new EffetMultiple(new EffetCiblerTous(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 1, true)))));
// Dynamite
@ -131,11 +133,11 @@ public class CreatingCardsTest {
// Hache tueuse
insert(22,new CarteEquipementStat<TypeTenebre>(
QueryGenerator.queryInsertObject(22,new CarteEquipementStat(CartePiochable.Type.TENEBRE,
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
// Hachoir maudit
insert(23,new CarteEquipementStat<TypeTenebre>(
QueryGenerator.queryInsertObject(23,new CarteEquipementStat(CartePiochable.Type.TENEBRE,
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
@ -148,39 +150,39 @@ public class CreatingCardsTest {
// Poupé démoniaque
// 26
insert(28,new CartePiochable<TypeTenebre>(
QueryGenerator.queryInsertObject(28,new CartePiochable(CartePiochable.Type.TENEBRE,
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 20, true))
,new ConditionMultiple(new ConditionEquipe(CartePersonnage.Equipe.SHADOW), new ConditionReveal())
));
// 29
insert(30,new CartePiochable<TypeTenebre>(
QueryGenerator.queryInsertObject(30,new CartePiochable(CartePiochable.Type.TENEBRE,
new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))));
insert(31,new CartePiochable<TypeTenebre>(
QueryGenerator.queryInsertObject(31,new CartePiochable(CartePiochable.Type.TENEBRE,
new EffetChoisirCible(new ActionVoler(ActionVoler.VOLER))));
insert(32,new CarteEquipementStat<TypeTenebre>(
QueryGenerator.queryInsertObject(32,new CarteEquipementStat(CartePiochable.Type.TENEBRE,
new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, 1, true))));
// Vision clairvoyante
insert(33, new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -1, true)),
QueryGenerator.queryInsertObject(33, new CartePiochable(CartePiochable.Type.VISION,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<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
QueryGenerator.queryInsertObject(34,new CartePiochable(CartePiochable.Type.VISION,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<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
QueryGenerator.queryInsertObject(35,new CartePiochable(CartePiochable.Type.VISION,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<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
QueryGenerator.queryInsertObject(36, new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)),
new ConditionStatistiques(ConditionStatistiques.JOUEUR, Joueur.PLAYER_HP, 12, ConditionStatistiques.MORE)));
@ -188,59 +190,57 @@ public class CreatingCardsTest {
// Vision enivrante
insert(38,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
QueryGenerator.queryInsertObject(38,new CartePiochable(CartePiochable.Type.VISION,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<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
QueryGenerator.queryInsertObject(39,new CartePiochable(CartePiochable.Type.VISION,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<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)),
QueryGenerator.queryInsertObject(40,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)),
new ConditionEquipe(CartePersonnage.Equipe.SHADOW)));
// Vision furtive
insert(41,new CartePiochable<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
QueryGenerator.queryInsertObject(41,new CartePiochable(CartePiochable.Type.VISION,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<TypeVision>(new EffetChoisirEffet(new EffetChoisirCible(new ActionVoler(ActionVoler.DONNER)),new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true))),
QueryGenerator.queryInsertObject(42,new CartePiochable(CartePiochable.Type.VISION,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<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)),
QueryGenerator.queryInsertObject(43,new CartePiochable(CartePiochable.Type.VISION,new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-1,true)),
new ConditionEquipe(CartePersonnage.Equipe.SHADOW)));
// Vision lugubre
insert(45,new CartePiochable<TypeVision>(new EffetChoisirCible(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP,-2,true)),
QueryGenerator.queryInsertObject(45,new CartePiochable(CartePiochable.Type.VISION,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));
QueryGenerator.queryInsertObject(48,new Allie());
QueryGenerator.queryInsertObject(49,new Bob());
QueryGenerator.queryInsertObject(50,new Charles());
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));
QueryGenerator.queryInsertObject(51,new Daniel());
QueryGenerator.queryInsertObject(52,new Emi());
QueryGenerator.queryInsertObject(53,new Franklin());
QueryGenerator.queryInsertObject(54,new Georges());
QueryGenerator.queryInsertObject(55,new LoupGarou());
QueryGenerator.queryInsertObject(56,new Metamorphe());
QueryGenerator.queryInsertObject(57,new Vampire());
} catch (IOException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public static void insert(int row, Object obj) {
}
}

View File

@ -48,6 +48,22 @@ public class QueryGenerator {
return DriverManager.getConnection(url, user, password);
}
public static String selectId(int id) {
String table = "";
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");
}
return "SELECT * FROM " + table + " WHERE id = " + id;
}
public static void queryInsertObject(int id, Object o) throws IOException, SQLException {
String table = null;
@ -76,13 +92,13 @@ public class QueryGenerator {
}
String query = null;
query = "UPDATE" + table + " SET objet = ";
query = "UPDATE " + table + " SET objet = ? "
+ " WHERE id = ? " ;
Connection conn = connect();
PreparedStatement pst = conn.prepareStatement(query);
pst.setBinaryStream(4, objectIS);
pst.setBinaryStream(1, objectIS);
pst.setInt(2, id);
pst.executeUpdate();
}
}

View File

@ -2,39 +2,36 @@ package database;
public class Record {
private int id;
private String id;
private String nom;
private byte[] img;
private byte[] objetJava;
private byte[] obj;
public Record() {
this(0, null, null, null);
this("0", "", null);
}
public Record(String n, byte[] b) {
this(0, n, b);
this.nom = n;
this.img = b;
}
public Record(String number, String n, byte[] b) {
this(Integer.parseInt(number), n, b);
this.id = number;
this.nom = n;
this.img = b;
}
public Record(String number, String n, byte[] b, byte[] o) {
this(Integer.parseInt(number), n, b, o);
}
public Record(int i, String n, byte[] b) {
this(i, n, b, null);
}
public Record(int i, String n, byte[] b, byte[] o) {
public Record(String i, String n, byte[] b, byte[] obj) {
this.id = i;
this.nom = n;
this.img = b;
this.objetJava = o;
this.obj = obj;
}
public int getId() {
public String getId() {
return id;
}
@ -46,13 +43,13 @@ public class Record {
return img;
}
public byte[] getObjetJava() {
return objetJava;
}
@Override
public String toString() {
return String.format("%-20.30s %-30.30s %-20.30s %-20.30s%n", this.getId(), this.getNom(), this.getImg(), this.getObjetJava());
return String.format("%-20.30s %-30.30s %-20.30s %-20.30s%n", this.getId(), this.getNom(), this.getImg(), this.getObjet());
}
public byte[] getObjet() {
return this.obj;
}
}

View File

@ -0,0 +1,74 @@
package database;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.HashMap;
import java.util.Map;
import carte.Carte;
import carte.CartePiochable;
public class RessourceLoader {
private static Map<Integer, Carte> loadCards() throws ClassNotFoundException, IOException{
Table t = new Table();
Map<Integer, Carte> cartes = new HashMap<Integer,Carte>();
for(int i = 0; i < 61; i++) {
String query = QueryGenerator.selectId(i+1);
t.remplirTableQuery(query);
byte[] obj = t.getList().get(i).getObjet();
if(obj != null) {
Object o = deserialize(obj);
Carte c = (Carte)o;
cartes.put(i+1, c);
}
}
return cartes;
}
private static Map<Integer, CartePiochable> getMapType(CartePiochable.Type t, Map<Integer, Carte> cartes){
Map<Integer, CartePiochable> cartesType = new HashMap<Integer, CartePiochable>();
for(Integer i: cartes.keySet()) {
Carte c = cartes.get(i);
if(cartes.get(i) instanceof CartePiochable) {
CartePiochable carte = (CartePiochable) c;
CartePiochable.Type type = carte.getType();
if(t == type) {
cartesType.put(i,carte);
}
}
}
return cartesType;
}
public static Object deserialize(byte[] data) throws IOException, ClassNotFoundException {
ByteArrayInputStream in = new ByteArrayInputStream(data);
ObjectInputStream is = new ObjectInputStream(in);
return is.readObject();
}
public static void main(String[] args) {
try {
Map<Integer, Carte> cartes = loadCards();
System.out.println(cartes);
System.out.println(getMapType(CartePiochable.Type.TENEBRE, cartes));
} catch (ClassNotFoundException | IOException e) {
e.printStackTrace();
}
}
}

View File

@ -1,5 +1,10 @@
package database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
@ -8,6 +13,10 @@ public class Table {
private String name;
private List<Record> list = new ArrayList<Record>();
public Table() {
this.name = "";
}
public Table(String JavaTableName) {
this.name = JavaTableName;
}
@ -16,6 +25,23 @@ public class Table {
this.list = DatabaseManager.remplirTable(query);
}
public void remplirTableQuery(String query) {
try (Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/ShadowHunterDatabase", "shManager", "shadowhunter1234")) { //notre utilisateur que l'on utilisera (:
System.out.println("Connected to PostgreSQL database!");
Statement statement = connection.createStatement();
System.out.println("Reading records...");
ResultSet retour = statement.executeQuery(query);
while (retour.next()) {
list.add(new Record(retour.getString("id"), retour.getString("nom"), null, retour.getBytes("objet")));
}
} catch (SQLException e) {
System.out.println("Connection failure.");
e.printStackTrace();
}
}
protected String getName() {
return name;
}

View File

@ -1,33 +1,14 @@
package database;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import carte.CartePiochable;
import condition.Condition;
import effet.EffetSelf;
import effet.action.ActionAltererStatistiquesJoueur;
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());
CartePiochable instance = new CartePiochable(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true)), new Condition());
try {
insertCartePiochable(instance);
@ -42,7 +23,7 @@ public class TestAddingCard {
return DriverManager.getConnection(url, user, password);
}
public static void insertCartePiochable(CartePiochable<?> instance) throws IOException, SQLException {
public static void insertCartePiochable(Carte instance) throws IOException, SQLException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos;
@ -80,5 +61,5 @@ public class TestAddingCard {
ObjectInputStream is = new ObjectInputStream(in);
return (CartePiochable<?>) is.readObject();
}
}*/
}

View File

@ -57,4 +57,9 @@ public class ActionAltererStatistiquesJoueur extends Action{
public void setValeur(int valeur) {
this.valeur = valeur;
}
@Override
public String toString(){
return this.key+" "+this.valeur+" "+this.ajouter;
}
}

View File

@ -38,7 +38,7 @@ public class ActionVoler extends Action{
List<CarteEquipement> equipements = j2.getEquipements();
// J1 choisit quel équipement voler
CarteEquipement<?> equipement = j1.choisir(equipements);
CarteEquipement equipement = j1.choisir(equipements);
j1.voler(j2,equipement);
}else {
@ -46,7 +46,7 @@ public class ActionVoler extends Action{
List<CarteEquipement> equipements = j1.getEquipements();
// J1 choisit quel équipement voler
CarteEquipement<?> equipement = j1.choisir(equipements);
CarteEquipement equipement = j1.choisir(equipements);
j2.voler(j1,equipement);

View File

@ -6,13 +6,19 @@ import java.util.Stack;
import carte.CartePiochable;
public class Pioche<T extends Type> {
public class Pioche {
private Stack<CartePiochable<T>> cartesPiochables;
private Stack<CartePiochable> cartesPiochables;
private CartePiochable.Type type;
public Pioche(List<CartePiochable<T>> cartesPiochables) {
public Pioche(List<CartePiochable> cartesPiochables) {
}
public Pioche(CartePiochable.Type type, List<CartePiochable> list1) {
super();
this.cartesPiochables = new Stack<CartePiochable<T>>();
this.type = type;
this.cartesPiochables = new Stack<CartePiochable>();
this.cartesPiochables.addAll(cartesPiochables);
melanger();
}
@ -22,7 +28,7 @@ public class Pioche<T extends Type> {
Collections.shuffle(cartesPiochables);
}
public CartePiochable<?> piocher() {
public CartePiochable piocher() {
return cartesPiochables.pop();
}
}

View File

@ -61,31 +61,31 @@ public class Plateau extends Thread{
this.stats.put(NB_SHADOWS, 0);
this.stats.put(NB_NEUTRES, 0);
List<CartePiochable<TypeLumiere>> list1 = new ArrayList<>();
List<CartePiochable<TypeTenebre>> list2 = new ArrayList<>();
List<CartePiochable> list1 = new ArrayList<>();
List<CartePiochable> list2 = new ArrayList<>();
for(int i = 0; i < 60; i++) {
CartePiochable<TypeLumiere> carte1 = new CartePiochable<TypeLumiere>("Eau bénite", "Soin 2");
CartePiochable carte1 = new CartePiochable(CartePiochable.Type.LUMIERE,"Eau bénite", "Soin 2");
carte1.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true)));
list1.add(carte1);
CartePiochable<TypeTenebre> carte2 = new CartePiochable<TypeTenebre>("Eau maudite", "Damage 2");
CartePiochable carte2 = new CartePiochable(CartePiochable.Type.TENEBRE,"Eau maudite", "Damage 2");
carte2.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)));
list2.add(carte2);
}
Pioche<TypeLumiere> piocheLumiere = new Pioche<TypeLumiere>(list1);
Pioche<TypeTenebre> piocheTenebre = new Pioche<TypeTenebre>(list2);
Pioche piocheLumiere = new Pioche(list1);
Pioche piocheTenebre = new Pioche(list2);
CarteLieu lieu1 = new CarteLieuType<TypeTenebre>("Antre de l'Ermite","desc",new Point(2,3),piocheTenebre);
CarteLieu lieu2 = new CarteLieuType<TypeTenebre>("Cimetière","desc",new Point(-1,8),piocheTenebre);
CarteLieu lieu1 = new CarteLieuType(CartePiochable.Type.TENEBRE,"Antre de l'Ermite","desc",new Point(2,3),piocheTenebre);
CarteLieu lieu2 = new CarteLieuType(CartePiochable.Type.TENEBRE,"Cimetière","desc",new Point(-1,8),piocheTenebre);
CarteLieu lieu3 = new CarteLieu("Forêt hantée","desc",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))));
CarteLieu lieu4 = new CarteLieuType<TypeLumiere>("Monastère","desc",new Point(-1,6),piocheLumiere);
CarteLieu lieu4 = new CarteLieuType(CartePiochable.Type.LUMIERE,"Monastère","desc",new Point(-1,6),piocheLumiere);
CarteLieu lieu5 = new CarteLieuType<TypeTenebre>("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre);
CarteLieu lieu5 = new CarteLieuType(CartePiochable.Type.TENEBRE,"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(ActionVoler.VOLER)));

View File

@ -20,6 +20,7 @@ public class Allie extends Unique{
*/
private static final long serialVersionUID = 8822533547275463314L;
public Allie(Joueur joueur) {
super("ALLIE","desc", 8, joueur);

View File

@ -18,6 +18,14 @@ public class Charles extends CartePersonnage{
}
public Charles() {
super("Charles", "desc", 11, null);
Action action = new ActionAltererStatistiquesJoueur("HP",-2,true);
Effet effet = new EffetSelf(action);
this.setEffet(effet);
}
@Override
public void attaquer(Joueur j, int blessure) {

View File

@ -20,6 +20,22 @@ public class Daniel extends CartePersonnage{
public static final int HP = 13;
public Daniel() {
super("Daniel","desc", HP, null);
List<Condition> conditions = new ArrayList<Condition>();
List<Condition> conditions2 = new ArrayList<Condition>();
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(Joueur j) {
super("Daniel","desc", HP, j);
@ -58,6 +74,8 @@ public class Daniel extends CartePersonnage{
public void utiliser() {
this.getJoueur().reveal();
}

View File

@ -7,6 +7,12 @@ public class Emi extends CartePersonnage{
public static final int HP = 13;
public Emi() {
super("EMI","desc", HP, null);
this.setCondition(new WinConditionHunter());
}
public Emi(Joueur j) {
super("EMI","desc", HP, j);
@ -24,6 +30,8 @@ public class Emi extends CartePersonnage{
public void deplacer() {
}

View File

@ -6,6 +6,11 @@ import main.Plateau;
public class Georges extends Unique{
public Georges() {
super("Franklin", "desc", 14, null);
this.setCondition(new WinConditionHunter());
this.setEquipe(CartePersonnage.Equipe.HUNTER);
}
public Georges(Joueur joueur) {
super("Franklin", "desc", 14, joueur);
@ -19,6 +24,8 @@ public class Georges extends Unique{
this.setEquipe(CartePersonnage.Equipe.HUNTER);
}
public void utiliser() {
Joueur joueur = this.getJoueur();

View File

@ -5,8 +5,18 @@ import main.Joueur;
public class LoupGarou extends CartePersonnage {
/**
*
*/
public static final int HP = 14;
public LoupGarou() {
super("LOUP-GAROU","desc", HP, null);
this.setCondition(new WinConditionShadow());
this.setEquipe(CartePersonnage.Equipe.SHADOW);
}
public LoupGarou(Joueur j) {
super("LOUP-GAROU","desc", HP, j);
this.setCondition(new WinConditionShadow());
@ -19,8 +29,6 @@ public class LoupGarou extends CartePersonnage {
this.setCondition(new WinConditionShadow());
}
public void utiliser() {
}

View File

@ -11,6 +11,11 @@ public class Metamorphe extends CartePersonnage{
private static final long serialVersionUID = 8415184267445994107L;
public final static int HP = 11;
public Metamorphe() {
super("METAMORPHE","desc", HP, null);
this.setCondition(new WinConditionShadow());
}
public Metamorphe(Joueur j) {
super("METAMORPHE","desc", HP, j);
this.setCondition(new WinConditionShadow());
@ -21,8 +26,6 @@ public class Metamorphe extends CartePersonnage{
this.setCondition(new WinConditionShadow());
}
public void utiliser() {
}
}

View File

@ -51,7 +51,7 @@ class GestionnaireEquipementsTest {
for(int i = 0; i < 20; i++) {
CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
CarteEquipementStat es = new CarteEquipementStat(null,null);
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++) {
CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
CarteEquipementStat es = new CarteEquipementStat(null,null);
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;
CarteEquipementStat es = new CarteEquipementStat("AddDamage", "desc");
CarteEquipementStat es = new CarteEquipementStat(null,null);
es.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_DAMAGE, valeurEffet, true)));
es.setCondition(new Condition());
j1.ajouterEquipement(es);

View File

@ -237,9 +237,9 @@ public class IATest {
public void choixEquipementTest() {
//setup
List<CarteEquipement> equips = new ArrayList<>();
equips.add(new CarteEquipementEffet("lol","mdr"));
equips.add(new CarteEquipementEffet("lol1","mdr1"));
equips.add(new CarteEquipementStat("lol2","mdr2"));
equips.add(new CarteEquipementEffet(null,null));
equips.add(new CarteEquipementEffet(null,null));
equips.add(new CarteEquipementStat(null,null));
//on choisit l'equipement avec les stat en priorite
assertTrue(jIA.choisirEquipement(equips) instanceof CarteEquipementStat);

View File

@ -54,33 +54,33 @@ class PlateauTest {
p = new Plateau(joueurs);
List<CartePiochable<TypeLumiere>> list1 = new ArrayList<>();
List<CartePiochable<TypeTenebre>> list2 = new ArrayList<>();
List<CartePiochable> list1 = new ArrayList<>();
List<CartePiochable> list2 = new ArrayList<>();
for(int i = 0; i < 60; i++) {
CartePiochable<TypeLumiere> carte1 = new CartePiochable<TypeLumiere>("Eau bénite", "Soin 2");
CartePiochable carte1 = new CartePiochable(CartePiochable.Type.LUMIERE,"Eau bénite", "Soin 2");
carte1.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, 2, true)));
list1.add(carte1);
CartePiochable<TypeTenebre> carte2 = new CartePiochable<TypeTenebre>("Eau maudite", "Damage 2");
CartePiochable carte2 = new CartePiochable(CartePiochable.Type.TENEBRE,"Eau maudite", "Damage 2");
carte2.setEffet(new EffetSelf(new ActionAltererStatistiquesJoueur(Joueur.PLAYER_HP, -2, true)));
list2.add(carte2);
}
Pioche<TypeLumiere> piocheLumiere = new Pioche<TypeLumiere>(list1);
Pioche<TypeTenebre> piocheTenebre = new Pioche<TypeTenebre>(list2);
Pioche piocheLumiere = new Pioche(CartePiochable.Type.LUMIERE,list1);
Pioche piocheTenebre = new Pioche(CartePiochable.Type.TENEBRE,list2);
CarteLieu lieu1 = new CarteLieuType<TypeTenebre>("Antre de l'Ermite","desc",new Point(2,3),piocheTenebre);
CarteLieu lieu2 = new CarteLieuType<TypeTenebre>("Cimetière","desc",new Point(-1,8),piocheTenebre);
CarteLieu lieu1 = new CarteLieuType(CartePiochable.Type.TENEBRE,"Antre de l'Ermite","desc",new Point(2,3),piocheTenebre);
CarteLieu lieu2 = new CarteLieuType(CartePiochable.Type.TENEBRE,"Cimetière","desc",new Point(-1,8),piocheTenebre);
CarteLieu lieu3 = new CarteLieu("Forêt hantée","desc",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))));
CarteLieu lieu4 = new CarteLieuType<TypeLumiere>("Monastère","desc",new Point(-1,6),piocheLumiere);
CarteLieu lieu4 = new CarteLieuType(CartePiochable.Type.LUMIERE,"Monastère","desc",new Point(-1,6),piocheLumiere);
CarteLieu lieu5 = new CarteLieuType<TypeTenebre>("Sanctuaire Ancien","desc",new Point(4,5),piocheTenebre);
CarteLieu lieu5 = new CarteLieuType(CartePiochable.Type.LUMIERE,"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(ActionVoler.VOLER)));