Skip to content
Snippets Groups Projects
Commit d83fdf93 authored by rosier8u's avatar rosier8u
Browse files

ajout du dp Command

parent 412fa933
No related branches found
No related tags found
No related merge requests found
Showing with 129 additions and 17 deletions
package modele.DPCommand;
import modele.Jeu;
public interface Command {
void execute(Jeu jeu);
}
\ No newline at end of file
package modele.DPCommand;
import modele.DPFabrique.ConstructeurGuerisseur;
import modele.DPFabrique.ConstructeurSorcier;
import modele.Jeu;
public class CommandCreerGuerisseur implements Command{
@Override
public void execute(Jeu jeu) {
jeu.setConstructeur(new ConstructeurGuerisseur());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
}
}
package modele.DPCommand;
import modele.DPFabrique.ConstructeurGuerisseur;
import modele.DPFabrique.ConstructeurGuerrier;
import modele.DPFabrique.ConstructeurSorcier;
import modele.Jeu;
public class CommandCreerGuerrier implements Command{
@Override
public void execute(Jeu jeu) {
jeu.setConstructeur(new ConstructeurGuerrier());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
}
}
package modele.DPCommand;
import modele.DPFabrique.ConstructeurRoi;
import modele.DPFabrique.ConstructeurSorcier;
import modele.Jeu;
public class CommandCreerRoi implements Command{
@Override
public void execute(Jeu jeu) {
jeu.setConstructeur(new ConstructeurRoi());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
}
}
package modele.DPCommand;
import modele.DPFabrique.ConstructeurSorcier;
import modele.Jeu;
public class CommandCreerSorcier implements Command{
@Override
public void execute(Jeu jeu) {
jeu.setConstructeur(new ConstructeurSorcier());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
}
}
package modele.DPCommand;
import modele.Jeu;
import java.util.ArrayList;
import java.util.List;
public class Invoker {
private List<Command> commandHistory = new ArrayList<>();
private Jeu jeu;
public Invoker(Jeu jeu){
this.jeu= jeu;
}
public void executeCommand(Command command) {
command.execute(jeu);
commandHistory.add(command);
}
public void executeLastCommand(){
commandHistory.get(commandHistory.size()).execute(jeu);
}
public void undoLastCommand() {
if (!commandHistory.isEmpty()) {
Command lastCommand = commandHistory.remove(commandHistory.size() - 1);
}
}
}
package modele.DPCommand;
import modele.DPStrategie.ConcreteStrategieAgressif;
import modele.DPStrategie.ConcreteStrategieDefensif;
import modele.DPStrategie.ConcreteStrategieNeutre;
import modele.Personnage;
public class Receiver {
public void actionStrategie(Personnage personnage, int strat) {
switch (strat) {
case 1:
personnage.setStrategie(new ConcreteStrategieNeutre());
break;
case 2:
personnage.setStrategie(new ConcreteStrategieAgressif());
break;
case 3:
personnage.setStrategie(new ConcreteStrategieDefensif());
break;
}
}
}
package modele; package modele.DPVisiteur;
import modele.*;
import modele.DPVisiteur.VisiteurGroupe; import modele.DPVisiteur.VisiteurGroupe;
public class DegatVisiteur implements VisiteurGroupe { public class DegatVisiteur implements VisiteurGroupe {
......
package modele; package modele;
import modele.DPCommand.*;
import modele.DPFabrique.*; import modele.DPFabrique.*;
import modele.DPStrategie.ConcreteStrategieAgressif; import modele.DPStrategie.ConcreteStrategieAgressif;
import modele.DPStrategie.ConcreteStrategieDefensif; import modele.DPStrategie.ConcreteStrategieDefensif;
import modele.DPStrategie.ConcreteStrategieNeutre; import modele.DPStrategie.ConcreteStrategieNeutre;
import modele.Jeu;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Scanner; import java.util.Scanner;
...@@ -12,10 +12,12 @@ import java.util.Scanner; ...@@ -12,10 +12,12 @@ import java.util.Scanner;
public class DialogueTerminal { public class DialogueTerminal {
private Jeu jeu; private Jeu jeu;
private int finDePartie; private int finDePartie;
private Invoker invoker;
public DialogueTerminal(Jeu jeu){ public DialogueTerminal(Jeu jeu){
this.jeu = jeu; this.jeu = jeu;
this.finDePartie = 0; this.finDePartie = 0;
invoker = new Invoker(jeu);
} }
public void debutPartie(){ public void debutPartie(){
Scanner scan = new Scanner(System.in); Scanner scan = new Scanner(System.in);
...@@ -102,20 +104,16 @@ public class DialogueTerminal { ...@@ -102,20 +104,16 @@ public class DialogueTerminal {
private void ajouterPersonnage(int choix){ private void ajouterPersonnage(int choix){
switch (choix){ switch (choix){
case 1: case 1:
jeu.setConstructeur(new ConstructeurGuerrier()); invoker.executeCommand(new CommandCreerGuerrier());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break; break;
case 2: case 2:
jeu.setConstructeur(new ConstructeurRoi()); invoker.executeCommand(new CommandCreerRoi());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break; break;
case 3: case 3:
jeu.setConstructeur(new ConstructeurGuerisseur()); invoker.executeCommand(new CommandCreerGuerisseur());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break; break;
case 4: case 4:
jeu.setConstructeur(new ConstructeurSorcier()); invoker.executeCommand(new CommandCreerSorcier());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break; break;
} }
} }
...@@ -144,20 +142,19 @@ public class DialogueTerminal { ...@@ -144,20 +142,19 @@ public class DialogueTerminal {
while (strat < 0 || strat > 2) { while (strat < 0 || strat > 2) {
System.out.println("Votre personnage : " + jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()) + " va attaquer" + System.out.println("Votre personnage : " + jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()) + " va attaquer" +
"le personnage ennemi : " + jeu.getEquipeEnnemi().getPersonnage(jeu.getNbAttaqueEquipe())); "le personnage ennemi : " + jeu.getEquipeEnnemi().getPersonnage(jeu.getNbAttaqueEquipe()));
System.out.println("Choisissez votre stratégie pour ce tour :\n0: La même que précédement\n1: Neutre\n2: Agressif\n3: Défensif"); System.out.println("Choisissez votre stratégie pour ce tour :\n0: Neutre\n1: Agressif\n2: Défensif");
strat = Integer.parseInt(scan.nextLine()); strat = Integer.parseInt(scan.nextLine());
} }
Personnage personnage = jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe());
switch (strat) { switch (strat) {
case 0: case 0:
personnage.setStrategie(new ConcreteStrategieNeutre());
break;
case 1: case 1:
jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()).setStrategie(new ConcreteStrategieNeutre()); personnage.setStrategie(new ConcreteStrategieAgressif());
break; break;
case 2: case 2:
jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()).setStrategie(new ConcreteStrategieAgressif()); personnage.setStrategie(new ConcreteStrategieDefensif());
break;
case 3:
jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()).setStrategie(new ConcreteStrategieDefensif());
break; break;
} }
} }
......
package tests; package tests;
import modele.*; import modele.*;
import modele.DPVisiteur.DegatVisiteur;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment