Commit 927ff3e1 authored by Antoine Guérin's avatar Antoine Guérin
Browse files

Ajout des effets des différentes cartes

parent 6637f130
......@@ -3,10 +3,12 @@ package fr.univnantes.alma.game;
import fr.univnantes.alma.game.composant.Carte.CarteLieu;
import fr.univnantes.alma.game.composant.Carte.CarteSurvie;
import fr.univnantes.alma.game.composant.Carte.CarteTraque;
import fr.univnantes.alma.game.composant.GameVariable;
import fr.univnantes.alma.game.composant.Joueur.Creature;
import fr.univnantes.alma.game.composant.Joueur.Traque;
import fr.univnantes.alma.game.composant.Pion.Pion;
import fr.univnantes.alma.game.composant.Plateau;
import jdk.internal.net.http.common.Pair;
import java.util.ArrayList;
import java.util.Objects;
......@@ -25,11 +27,14 @@ public class ServeurNotAlone implements ServeurNotAloneInterface {
private Plateau plateau;
private GameVariable gameVariable;
public ServeurNotAlone(ArrayList<String> listPlayer) {
plateau = new Plateau(listPlayer.size());
carteJouer = new ArrayList<CarteLieu>();
carteTraqueJouer = new CarteTraque("","",0,null);
gameVariable = new GameVariable();
Random random = new Random();
int rand = random.nextInt(listPlayer.size());
......@@ -193,8 +198,164 @@ public class ServeurNotAlone implements ServeurNotAloneInterface {
return "";
}
private void perdePionVolonte(Traque traque){
traque.setPionVolonte(traque.getPionVolonte() -1);
public void effetCarteSurvie(CarteSurvie card){
switch (card.getNom()){
case "Adrénaline" :
this.gameVariable.ajoutPointdeDegatPionVolonte();
break;
case "Alerte" :
this.gameVariable.setPouvoirResister();
break;
case "Amplificateur" :
System.out.println("Désigner un traqué :");
Scanner scan = new Scanner(System.in);
String nomJoueur = scan.nextLine();
Traque joueur = this.retournerTraque(nomJoueur);
int i = 0;
while (i<this.gameVariable.getListeCartejoue().size() && !(this.gameVariable.getListeCartejoue().get(i).first == joueur)) {
++i;
}
if (i < this.gameVariable.getListeCartejoue().size()) {
if (this.creature.getJetonCreature().getPosition().contains(this.gameVariable.getListeCartejoue().get(i).second)) {
this.avancerPionAssimilation();
}
}
break;
case "Brouillage" :
break;
case "Cavale" :
break;
case "Détecteur" :
break;
case "Drone" :
break;
case "Entrave" :
break;
case "Équipement" :
break;
case "Esquive" :
break;
case "Fausse piste" :
break;
case "Hologramme" :
break;
case "Leurre" :
break;
case "Mimétisme" :
break;
case "Navette" :
break;
case "Planques" :
break;
case "Portail" :
break;
case "Ralliement" :
break;
case "Refuge" :
break;
case "Régénération" :
break;
case "Résistance" :
break;
case "Retraite" :
break;
case "Riposte" :
break;
case "Sacrifice" :
break;
case "Second Souffle" :
break;
case "Sixième sens" :
break;
case "Système D" :
break;
case "Ténacité" :
break;
case "Vaccin" :
break;
case "Volte-face" :
break;
case "Vortex" :
break;
}
}
public void effetCarteTraque(CarteTraque card){
switch (card.getNom()){
case "Acharnement" :
break;
case "Angoisse" :
break;
case "Anticipation" :
break;
case "Cataclysme" :
break;
case "Champ de force" :
break;
case "Clone" :
break;
case "Déploiement" :
break;
case "Désespoir" :
break;
case "Détour" :
break;
case "Domination" :
break;
case "Effroi" :
break;
case "Emprise" :
break;
case "Épidémie" :
break;
case "Faille temporelle" :
break;
case "Gargantua" :
break;
case "Harcèlement" :
break;
case "Hurlements" :
break;
case "Inertie" :
break;
case "Interférences" :
break;
case "Intuition" :
break;
case "Magnétisme" :
break;
case "Mirage" :
break;
case "Mutation" :
break;
case "Psychose" :
break;
case "Réminiscence" :
break;
case "Repérage" :
break;
case "Sables mouvants" :
break;
case "Soif de sang" :
break;
case "Stase" :
break;
case "Télépathie" :
break;
case "Tornade" :
break;
case "Toxine" :
break;
case "Virus" :
break;
case "Zone Interdite" :
break;
}
}
private void perdrePionVolonte(Traque traque){
traque.setPionVolonte(traque.getPionVolonte() - this.gameVariable.getValeurSoustraitPionVolonte());
if(traque.getPionVolonte() <= 0){
traque.setPionVolonte(3);
avancerPionAssimilation();
......@@ -208,6 +369,8 @@ public class ServeurNotAlone implements ServeurNotAloneInterface {
return retournerCarteTraque(sc.nextLine());
}
public void phase1(){
int i = 0;
String action = "";
......@@ -220,12 +383,14 @@ public class ServeurNotAlone implements ServeurNotAloneInterface {
action = sc.nextLine();
if(action.compareTo("lacherPrise") == 0){
lacherPrise(traques.get(i));
}else if(action.compareTo("resister") == 0){
}else if(action.compareTo("resister") == 0 && this.gameVariable.isPouvoirResister()){
System.out.println("noter combien de carte vous voulez récupérer, 2 ou 4 ?");
nbCarte = sc.nextInt();
resister(traques.get(i), nbCarte);
}
this.carteJouer.add(traques.get(i).choisirCarte());
CarteLieu carteJoue = traques.get(i).choisirCarte();
this.carteJouer.add(carteJoue);
this.gameVariable.addCarteJoue(traques.get(i),carteJoue);
i++;
}
}
......@@ -298,7 +463,7 @@ public class ServeurNotAlone implements ServeurNotAloneInterface {
for (int i=0; i <= carteJouer.size(); i++){
if (creature.getJetonCreature().getPosition().contains(carteJouer.get(i))){
perdePionVolonte(traques.get(i));
perdrePionVolonte(traques.get(i));
jetonCreatureActive = true;
}else if(creature.getJetonCible().getPosition().contains(carteJouer.get(i))){
effetCarteTraque(carteTraqueJouer);
......
......@@ -2,7 +2,7 @@ package fr.univnantes.alma.game.composant.Carte;
import java.util.Objects;
public abstract class Carte {
public class Carte {
private final String nom;
private final String effet;
......
package fr.univnantes.alma.game.composant.Carte;
import fr.univnantes.alma.game.composant.Jeton.Jeton;
import fr.univnantes.alma.game.composant.Jeton.SymboleJeton;
public class CarteTraque extends Carte{
private final int phase;
private final String symbole;
private final SymboleJeton symbole;
public CarteTraque(String nom, String effet, int phase, String symbole) {
public CarteTraque(String nom, String effet, int phase, SymboleJeton symbole) {
super(nom, effet);
this.phase = phase;
this.symbole = symbole;
......@@ -15,7 +16,7 @@ public class CarteTraque extends Carte{
return phase;
}
public String getSymbole() {
public SymboleJeton getSymbole() {
return symbole;
}
}
package fr.univnantes.alma.game.composant;
import fr.univnantes.alma.game.composant.Carte.CarteLieu;
import fr.univnantes.alma.game.composant.Joueur.Traque;
import jdk.internal.net.http.common.Pair;
import java.util.ArrayList;
public class GameVariable {
private int valeurSoustraitPionVolonte;
private boolean pouvoirResister;
private Pair<Traque, CarteLieu> CarteJoueParJoueur;
private ArrayList<Pair<Traque, CarteLieu>> listeCartejoue;
public GameVariable() {
valeurSoustraitPionVolonte = 1;
pouvoirResister = true;
CarteJoueParJoueur = new Pair<>(null,null);
listeCartejoue = new ArrayList<>();
}
/*********** GETTERS ***********/
public int getValeurSoustraitPionVolonte() {
return valeurSoustraitPionVolonte;
}
public boolean isPouvoirResister() {
return pouvoirResister;
}
public Pair<Traque, CarteLieu> getCarteJoueParJoueur() {
return CarteJoueParJoueur;
}
public ArrayList<Pair<Traque, CarteLieu>> getListeCartejoue() {
return listeCartejoue;
}
/*********** METHODES *********/
public void ajoutPointdeDegatPionVolonte() {
++this.valeurSoustraitPionVolonte;
}
public void setPouvoirResister() {
this.pouvoirResister = !this.pouvoirResister;
}
public void setCarteJoueParJoueur(Traque joueur,CarteLieu carte) {
this.CarteJoueParJoueur = new Pair<>(joueur,carte);
}
public void addCarteJoue(Traque joueur, CarteLieu carte) {
this.setCarteJoueParJoueur(joueur,carte);
this.listeCartejoue.add(this.CarteJoueParJoueur);
}
}
......@@ -119,7 +119,6 @@ public class Plateau {
this.piocheTraque.add(new Telephatie());
this.piocheTraque.add(new Tornade());
this.piocheTraque.add(new Toxine());
this.piocheTraque.add(new Ubiquite());
this.piocheTraque.add(new Virus());
this.piocheTraque.add(new ZoneInterdite());
//Initialisation pion Assimilation
......
......@@ -5,6 +5,6 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Abri extends CarteLieu {
public Abri() {
super("L'Abri","...", 7);
super("L'Abri","Piochez 2 carte Survie, gardez-en une et défaussez l'autre", 7);
}
}
......@@ -5,6 +5,9 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Antre extends CarteLieu {
public Antre(){
super("L'Antre","...",1);
super("L'Antre","Au choix :\n" +
"- reprenez en main les cartes Lieu de votre défausse (mais pas celui-ci),\n" +
"- copiez le pouvoir d'un Lieu où le jeton Créature se trouve,\n" +
"Perdez 1 Volonté supplémentaire si le jeton Créature vous attrape.\n",1);
}
}
......@@ -6,7 +6,16 @@ import fr.univnantes.alma.game.composant.Carte.CouleurCarte;
public class Artefact extends CarteLieu {
private CouleurCarte couleur;
public Artefact(CouleurCarte color) {
super("L'Artefact", "...", 10);
super("L'Artefact", "Le pouvoir de l'Artefact varie selon la couleur choisie pour la partie. L’Artefact ne peut être copié (que ce soit par le pouvoir d'un Lieu ou une carte Survie).\n" +
"* Bleu : Au prochain tour, jouez 2 cartes Lieu.\n" +
"Résolvez les deux Lieu individuellement dans l’ordre de votre choix en respectant les règles de la Phase 3.\n" +
"Lorsqu’un Traqué révèle ses cartes Lieu, s’il peut appliquer les effets de la Rivière et de l’Artefact bleu durant\n" +
"un même tour, il doit choisir l’un des deux effets, puis il peut reprendre une carte Lieu de sa défausse.\n" +
"* Rouge : Copiez les effets d'1 carte Lieu de votre défausse.\n" +
"* Vert : Défaussez 1 carte Lieu et déplacez 1 Traqué de votre choix sur un Lieu adjacent.\n" +
"* Jaune : Au choix :\n" +
"- annulez les effets du jeton Artemia,\n" +
"- récupérez 2 cartes Lieu de votre défausse.", 10);
this.couleur = color;
}
}
......@@ -4,6 +4,9 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Epave extends CarteLieu {
public Epave() {
super("L'Epave'", "...", 8);
super("L'Epave'", "Avancez le pion Secours d'1 case (1 fois par tour, quel que soit le nombre de Traqués explorant l’Épave).\n" +
"Si plusieurs Traqués explorent l’Épave, l’un d’eux peut utiliser le pouvoir de l’Épave et les autres peuvent\n" +
"récupérer 1 carte Lieu de leur défausse.\n" +
"Le pouvoir de l’Épave est cumulable avec celui de la Plage.", 8);
}
}
......@@ -5,6 +5,6 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Jungle extends CarteLieu {
public Jungle() {
super("La Jungle", "...",2);
super("La Jungle", "Reprenez en main cette carte Lieu et 1 carte Lieu de votre défausse",2);
}
}
......@@ -4,6 +4,6 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Marais extends CarteLieu {
public Marais() {
super("Le Marais", "...", 6);
super("Le Marais", "Reprenez en main cette carte Lieu et 2 cartes Lieu de votre défausse.", 6);
}
}
......@@ -7,7 +7,12 @@ public class Plage extends CarteLieu {
private boolean balise;
public Plage() {
super("La Plage", "...", 4);
super("La Plage", "Au choix, 1 fois par tour :\n" +
"- placez le pion Balise sur la Plage,\n" +
"- retirez le pion Balise de la Plage pour avancer le pion Secours d’une case (max 1x/tour).\n" +
"Si plusieurs Traqués explorent la Plage, l’un d’eux peut utiliser le pouvoir de la Plage et les autres peuvent\n" +
"récupérer 1 carte Lieu de leur défausse.\n" +
"Le pouvoir de la Plage est cumulable avec celui de l’Épave.", 4);
this.balise = false;
}
}
......@@ -4,6 +4,7 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Riviere extends CarteLieu {
public Riviere() {
super("La Rivière", "...", 3);
super("La Rivière", "Au prochain tour, jouez 2 cartes Lieu.\n" +
"Avant de révéler, choisissez-en une et reprenez l'autre en main.", 3);
}
}
......@@ -4,6 +4,6 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Rover extends CarteLieu {
public Rover() {
super("Le Rover", "...", 5);
super("Le Rover", "Prenez de la réserve une carte Lieu que vous ne possédez pas et ajoutez-le à votre main.\n", 5);
}
}
......@@ -4,6 +4,8 @@ import fr.univnantes.alma.game.composant.Carte.CarteLieu;
public class Source extends CarteLieu {
public Source() {
super("La Source", "...", 9);
super("La Source", "Au choix :\n" +
"- le Traqué de votre choix (vous ou un autre joueur) récupère 1 Volonté,\n" +
"- piochez 1 carte Survie", 9);
}
}
......@@ -4,6 +4,6 @@ import fr.univnantes.alma.game.composant.Carte.CarteSurvie;
public class Adrenaline extends CarteSurvie {
public Adrenaline() {
super("Adrénaline","...",1);
super("Adrénaline","Le jeton Créature fait perdre 1 Volonté supplémentaire.\n",1);
}
}
......@@ -4,6 +4,8 @@ import fr.univnantes.alma.game.composant.Carte.CarteSurvie;
public class Alerte extends CarteSurvie {
public Alerte() {
super("Alerte","...",3);
super("Alerte","Désigner 1 Lieu :\n" +
"- les jetons Traque présents sur ce Lieu sont sans effet,\n" +
"- le pouvoir de ce Lieu est inutilisable.",3);
}
}
......@@ -4,6 +4,8 @@ import fr.univnantes.alma.game.composant.Carte.CarteSurvie;
public class Amplificateur extends CarteSurvie {
public Amplificateur() {
super("Amplificateur","...",4);
super("Au choix:\n" +
"- retirez le jeton Balise de la Plage pour avancer le pion Secours d’1 case,\n" +
"- avancez le pion Bouclier d'1 Lieu vers le Dôme.","...",4);
}
}
......@@ -4,6 +4,6 @@ import fr.univnantes.alma.game.composant.Carte.CarteSurvie;
public class Brouillage extends CarteSurvie {
public Brouillage() {
super("Brouillage","...",1);
super("Brouillage","Tous les Traqués cachent les cartes Lieu de leur défausse jusqu’à la fin du tour",1);
}
}
......@@ -4,6 +4,8 @@ import fr.univnantes.alma.game.composant.Carte.CarteSurvie;
public class Cavale extends CarteSurvie {
public Cavale() {
super("Caval","...",1);
super("Caval","1) Jouez 3 cartes Lieu,\n" +
"2) En Phase 3 : révélez celle de votre choix,\n" +
"3) En Phase 4 : reprenez en main la carte révélée et défaussez les 2 autres.\n",1);
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment