Skip to content

Commit

Permalink
Fix stratégie aggressif + contrer un effet
Browse files Browse the repository at this point in the history
  • Loading branch information
florianess committed Dec 2, 2017
1 parent 2f3d9fa commit a1a16ad
Show file tree
Hide file tree
Showing 9 changed files with 69 additions and 11 deletions.
18 changes: 16 additions & 2 deletions LO02/src/main/Aggresif.java
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,13 @@ public void appliquer(Tas leTas, Paquet lePaquet, Joueur leJoueur, Manche laManc
HashSet<Carte> cartesPossibles = new HashSet<Carte>();
HashSet<Carte> cartesPossiblesEffet = new HashSet<Carte>();
Set<String> valeursAttaque = laManche.getVarianteManche().getValeurEffetAttaque().keySet();
Set<String> valeursDef = laManche.getVarianteManche().getValeurEffetDefense().keySet();
Set<String> valeursEffet = valeursAttaque;
valeursEffet.addAll(valeursDef);
for (int i = 0; i < leJoueur.getSesCartes().size(); i++) {
leJoueur.setCarteChoisi(leJoueur.getSesCartes().get(i));
if (leJoueur.comparerCarte(leTas)) {
for (Iterator<String> it = valeursAttaque.iterator(); it.hasNext();) {
for (Iterator<String> it = valeursEffet.iterator(); it.hasNext();) {
String monIT = (String) it.next();
if (leJoueur.getCarteChoisi().getValeur().equals(monIT)) {
cartesPossiblesEffet.add(leJoueur.getCarteChoisi());
Expand All @@ -24,14 +27,25 @@ public void appliquer(Tas leTas, Paquet lePaquet, Joueur leJoueur, Manche laManc
cartesPossibles.add(leJoueur.getCarteChoisi());
}
}
/*System.out.println("Liste carte possibles");
for (Iterator<Carte> it = cartesPossibles.iterator(); it.hasNext();) {
System.out.println((Carte) it.next());
}
System.out.println("Liste carte possibles effet");
for (Iterator<Carte> it = cartesPossiblesEffet.iterator(); it.hasNext();) {
System.out.println((Carte) it.next());
} */

if (!cartesPossiblesEffet.isEmpty()) {
Carte newCart = (Carte) cartesPossiblesEffet.toArray()[0];
leJoueur.setCarteChoisi(newCart);
//System.out.println("la Carte choisi est " + leJoueur.getCarteChoisi());
leJoueur.poserCarte(leTas, lePaquet, laManche);
} else if (cartesPossibles.isEmpty()) {
} else if (!cartesPossibles.isEmpty()) {
Carte newCart = (Carte) cartesPossibles.toArray()[0];
leJoueur.setCarteChoisi(newCart);
//System.out.println("la Carte choisi est " + leJoueur.getCarteChoisi());
leJoueur.poserCarte(leTas, lePaquet, laManche);
} else {
leJoueur.sesCartes.add(lePaquet.piocherUneCarte());
Expand Down
40 changes: 36 additions & 4 deletions LO02/src/main/Joueur.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package main;

import java.util.ArrayList;
import java.util.HashSet;

public abstract class Joueur {

Expand Down Expand Up @@ -98,17 +99,48 @@ public void compterSesPoints() {

public abstract void afficherCartes();

public void appliquerEffet(Variante varianteManche,Tas leTas, Paquet lePaquet, Manche laManche) {
Effet lEffet = varianteManche.getValeurEffetDefense().get(carteChoisi.getValeur());
public void appliquerEffet(Tas leTas, Paquet lePaquet, Manche laManche) {
Effet lEffet = laManche.getVarianteManche().getValeurEffetDefense().get(carteChoisi.getValeur());
lEffet.lancer(this,leTas,lePaquet,laManche);
}

public void subirEffet(Variante varianteManche,Tas leTas, Paquet lePaquet, Manche laManche) {
public void subirEffet(Tas leTas, Paquet lePaquet, Manche laManche) {
System.out.println(this.nom + " subit un effet!");
Effet lEffet = varianteManche.getValeurEffetAttaque().get(leTas.getCarteVisible().getValeur());
if (laManche.getVarianteManche().getValeurEffetDefense().containsValue(new EffetContre())) {
if (this.valeursCartes().contains(laManche.getVarianteManche().getValeurContre())) {
System.out.println(this.nom + " contre l'effet avec un " + laManche.getVarianteManche().getValeurContre());
this.setCarteChoisi(this.laCarteContre(laManche.getVarianteManche().getValeurContre()));
this.poserCarte(leTas, lePaquet, laManche);
}
}
Effet lEffet = laManche.getVarianteManche().getValeurEffetAttaque().get(leTas.getCarteVisible().getValeur());
lEffet.lancer(this, leTas, lePaquet,laManche);
}

private Carte laCarteContre(String valeur) {
// TODO Auto-generated method stub
boolean trouve = false;
Carte carteTrouvee = null;
int i = 0;
while(!trouve && i < sesCartes.size()) {
if (sesCartes.get(i).getValeur().equals(valeur)) {
carteTrouvee = sesCartes.get(i);
} else {
i++;
}
}
return carteTrouvee;
}

private HashSet<String> valeursCartes() {
// TODO Auto-generated method stub
HashSet<String> vals = new HashSet<String>();
for (int i = 0; i < sesCartes.size();i++) {
vals.add(sesCartes.get(i).getValeur());
}
return vals;
}

public boolean uneCarteEstChoisi(Tas leTas) {
if (this.carteChoisi.equals(leTas.getCarteVisible())) {
return true;
Expand Down
4 changes: 2 additions & 2 deletions LO02/src/main/Manche.java
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ public Manche() {
lePaquet.melanger();
}
if (leTas.carteVisibleEffetAttaque(varianteManche)) {
joueurEnCours.subirEffet(varianteManche,leTas,lePaquet,this);
joueurEnCours.subirEffet(leTas,lePaquet,this);
}
jouerTour();
}
Expand All @@ -100,7 +100,7 @@ private void jouerTour() {
joueurEnCours.afficherCartes();
joueurEnCours.choisirUneCarte(leTas, lePaquet,this);
if (joueurEnCours.uneCarteEstChoisi(leTas) && varianteManche.getValeurEffetDefense().containsKey(joueurEnCours.getCarteChoisi().getValeur())) { //retour au if, le while bloquait le jeu au changement de couleur
joueurEnCours.appliquerEffet(varianteManche,leTas,lePaquet,this); // idée : déplacer ce if dans choisirCarte
joueurEnCours.appliquerEffet(leTas,lePaquet,this); // idée : déplacer ce if dans choisirCarte
}
if (joueurEnCours.getSesCartes().size() == 1) {
this.uneCarte();
Expand Down
4 changes: 2 additions & 2 deletions LO02/src/main/Partie.java
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ private Partie() {

System.out.println("Veuillez choisir le nombre d'IA");
nbIA = sc.nextByte();
JoueurPhysique moi = new JoueurPhysique(nomJoueur, (byte) (nbIA+1));
JoueurPhysique moi = new JoueurPhysique(nomJoueur, nbIA);

System.out.println("Veuillez choisir le mode de comptage (1 : positif ou 0 : negatif)");
modeComptage = sc.nextByte();
Expand All @@ -47,7 +47,7 @@ private Partie() {
lesDifficultes.add(new Aggresif());
for (byte i = 0; i < nbIA; i++) {
System.out.println("\nChoisir la difficulté de l'IA" + (i + 1) + "\n0: Facile\n1: Aggressif\n");
JoueurArtificiel IA = new JoueurArtificiel("IA" + (i + 1), (byte) (i + 1), lesDifficultes.get(sc.nextInt()));
JoueurArtificiel IA = new JoueurArtificiel("IA" + (i + 1), i, lesDifficultes.get(sc.nextInt()));
lesJoueurs.add(IA);
}

Expand Down
10 changes: 9 additions & 1 deletion LO02/src/main/Variante.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
public class Variante {

protected HashMap<String, Effet> valeurEffetDefense,valeurEffetAttaque;
protected String nom;
protected String nom,valeurContre;

public Variante() {
valeurEffetDefense = new HashMap<String, Effet>();
Expand Down Expand Up @@ -37,6 +37,14 @@ public String getNom() {

public void setNom(String nom) {
this.nom = nom;
}

public String getValeurContre() {
return valeurContre;
}

public void setValeurContre(String valeurContre) {
this.valeurContre = valeurContre;
}

}
1 change: 1 addition & 0 deletions LO02/src/main/Variante5.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ public class Variante5 extends Variante {
public Variante5() {
super();
this.nom = "5";
this.valeurContre = "8";
valeurEffetDefense.put("10",new EffetRejouer());
valeurEffetDefense.put("8", new EffetContre());
valeurEffetDefense.put("7", new EffetChangeSens());
Expand Down
1 change: 1 addition & 0 deletions LO02/src/main/VarianteCarteMaou.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ public class VarianteCarteMaou extends Variante {
public VarianteCarteMaou() {
super();
this.nom = "Carte et Maou";
this.valeurContre = "Valet";
valeurEffetDefense.put("10",new EffetRejouer());
valeurEffetAttaque.put("8", new EffetPasseTour());
valeurEffetAttaque.put("7", new EffetPiocher2());
Expand Down
1 change: 1 addition & 0 deletions LO02/src/main/VarianteMinimale.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ public class VarianteMinimale extends Variante {
public VarianteMinimale() {
super();
this.nom = "Minimal";
this.valeurContre = "8";
valeurEffetDefense.put("10",new EffetRejouer());
valeurEffetDefense.put("8",new EffetContre());
}
Expand Down
1 change: 1 addition & 0 deletions LO02/src/main/VarianteMonclar.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ public class VarianteMonclar extends Variante {
public VarianteMonclar() {
super();
this.nom = "Monclar";
this.valeurContre = "8";
valeurEffetDefense.put("10",new EffetRejouer());
valeurEffetDefense.put("8",new EffetContre());
valeurEffetAttaque.put("7", new EffetPasseTour());
Expand Down

0 comments on commit a1a16ad

Please sign in to comment.