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

Ajouter une classe de jeu (DP Facade) avec une interface rudimentaire...

Ajouter une classe de jeu (DP Facade) avec une interface rudimentaire permettant de créer une équipe,
d’en supprimer une, de produire des attaques, d’améliorer une équipe, etc.
parent a13e1a67
No related branches found
No related tags found
No related merge requests found
package modele.DPStrategie;
import modele.DPState.EtatBlesse;
import modele.Personnage;
public class ConcreteStrategieAgressif implements Strategie {
@Override
public void attaquer(int degat, Personnage personnage) {
personnage.subir(degat+5);
personnage.setEtat(new EtatBlesse(personnage));
}
@Override
......
package modele.DPStrategie;
import modele.DPState.EtatEndormi;
import modele.Personnage;
public class ConcreteStrategieDefensif implements Strategie {
......@@ -11,6 +12,7 @@ public class ConcreteStrategieDefensif implements Strategie {
nouveauDegat = degat-5;
}
personnage.subir(degat-5);
personnage.setEtat(new EtatEndormi(personnage));
}
@Override
......
package modele;
import modele.DPFabrique.*;
import modele.DPStrategie.ConcreteStrategieAgressif;
import modele.DPStrategie.ConcreteStrategieDefensif;
import modele.DPStrategie.ConcreteStrategieNeutre;
import modele.Jeu;
import java.util.ArrayList;
import java.util.Scanner;
public class DialogueTerminal {
private Jeu jeu;
private int finDePartie;
public DialogueTerminal(Jeu jeu){
this.jeu = jeu;
this.finDePartie = 0;
}
public void debutPartie(){
Scanner scan = new Scanner(System.in);
System.out.println("Bienvenue dans le jeu");
setConfig(scan);
while (jeu.getEquipe() == null){
System.out.println("Vous devez créer une équipe de maximum : "+
Configuration.getInstance().getTailleMaxEquipe()+" personnage");
creerEquipe(scan);
System.out.println("Votre équipe a été créé.\nVoulez-vous la supprimer Pour en recréer une ?\n0 : non\n1 : oui");
int supprimer = Integer.parseInt(scan.nextLine());
if (supprimer == 1){
jeu.supprimerEquipe();
}
}
afficherEquipe();
creerEnnemis();
while (finDePartie == 0){
jouer(scan);
}
}
public void jouer(Scanner scan){
System.out.println("\nQue voulez-vous faire ? :");
System.out.println("0 : Produire une attaque\n1 : Améliorer une équipe\n");
int action = Integer.parseInt(scan.nextLine());
switch (action){
case 0:
attaquer(scan);
annonceFinDeTour();
break;
case 1:
jeu.ameliorerEquipe(jeu.getEquipe());
System.out.println("Le niveau de votre équipe a été augmenté.");
break;
}
}
private void creerEquipe(Scanner scan){
System.out.println("Choisissez un nom pour votre équipe :");
jeu.creerEquipe(scan.nextLine());
System.out.println("Choisissez un personnage à ajouter à l'équipe :");
System.out.println("1 : Guerrier\n2 : Roi\n3 : Guerisseur\n4 : Sorcier\n");
int choix = Integer.parseInt(scan.nextLine());
ajouterPersonnage(choix);
int tailleActuelle = 1;
while (choix != 0 && tailleActuelle < Configuration.getInstance().getTailleMaxEquipe()){
System.out.println("Vous pouvez encore ajouter maximum : "+
(Configuration.getInstance().getTailleMaxEquipe()-tailleActuelle)+" personneges.");
System.out.println("Choisissez un personnage à ajouter à l'équipe :");
System.out.println("0 : Terminé\n1 : Guerrier\n2 : Roi\n3 : Guerisseur\n4 : Sorcier\n");
choix = Integer.parseInt(scan.nextLine());
if (choix != 0){
ajouterPersonnage(choix);
tailleActuelle++;
}
}
}
private void setConfig(Scanner scan){
System.out.println("Vous devez définir la configuration du jeu");
System.out.println("Choisissez un niveau de difficulté de 1 à 5");
int difficulte = Integer.parseInt(scan.nextLine());
while ((difficulte < 1) || (difficulte > 5)){
System.out.println("Choisissez un niveau de difficulté de 1 à 5");
difficulte = Integer.parseInt(scan.nextLine());
}
Configuration.getInstance().setDifficulte(difficulte);
System.out.println("Choisissez la taille maximum d'une équipe de 1 à 5");
int tailleEquipe = Integer.parseInt(scan.nextLine());
while (tailleEquipe < 1 || tailleEquipe > 5){
System.out.println("Choisissez la taille maximum d'une équipe de 1 à 5");
tailleEquipe = Integer.parseInt(scan.nextLine());
}
Configuration.getInstance().setTailleMaxEquipe(tailleEquipe);
}
private void ajouterPersonnage(int choix){
switch (choix){
case 1:
jeu.setConstructeur(new ConstructeurGuerrier());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break;
case 2:
jeu.setConstructeur(new ConstructeurRoi());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break;
case 3:
jeu.setConstructeur(new ConstructeurGuerisseur());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break;
case 4:
jeu.setConstructeur(new ConstructeurSorcier());
jeu.getEquipe().ajouter(jeu.getConstructeur().creerPersonnage());
break;
}
}
private void afficherEquipe(){
System.out.println("Voici votre équipe :");
for (Personnage p : jeu.getEquipe().getEquipe()){
System.out.println(p.toString());
}
}
private void creerEnnemis(){
jeu.setConstructeur(new ConstructeurGuerrier());
for (int i = 0; i < Configuration.getInstance().getTailleMaxEquipe(); i++){
jeu.getEquipeEnnemi().ajouter(jeu.getConstructeur().creerPersonnage());
}
}
private void attaquer(Scanner scan) {
choixStrategie(scan);
jeu.produireAttaque(jeu.getEquipe());
}
private void choixStrategie(Scanner scan){
int strat = -1;
while (strat < 0 || strat > 2) {
System.out.println("Votre personnage : " + jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()) + " va attaquer" +
"le personnage ennemi : " + jeu.getEquipeEnnemi().getPersonnage(jeu.getNbAttaqueEquipe()));
System.out.println("Choisissez votre stratégie pour ce tour :\n0: Neutre\n1: Agressif\n2: Défensif");
strat = Integer.parseInt(scan.nextLine());
}
switch (strat) {
case 0:
jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()).setStrategie(new ConcreteStrategieNeutre());
break;
case 1:
jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()).setStrategie(new ConcreteStrategieAgressif());
break;
case 2:
jeu.getEquipe().getPersonnage(jeu.getNbAttaqueEquipe()).setStrategie(new ConcreteStrategieDefensif());
break;
}
}
private void annonceFinDeTour(){
int nbMort = 0;
ArrayList<Personnage> listeDesMorts = new ArrayList<>();
System.out.println("Dans votre équipe :");
for (Personnage p : jeu.getEquipe().getEquipe()){
if (p.getPointsDeVie() <= 0){
System.out.printf("Le personnage "+p.toString()+" est mort.\n");
listeDesMorts.add(p);
nbMort ++;
}
}
for (Personnage p : listeDesMorts){
jeu.personnageMort(p);
if (jeu.tailleEquipe() == 0){
finDePartie = 1;
System.out.println("Toute votre équipe est morte\nVous avez PERDU.");
break;
}
}
if (nbMort == 0){
System.out.println("Il n'y a eu aucun mort.");
}
annonceEtat();
nbMort = 0;
listeDesMorts = new ArrayList<>();
System.out.println("Dans l'équipe adverse :");
for (Personnage p : jeu.getEquipeEnnemi().getEquipe()){
if (p.getPointsDeVie() <= 0){
System.out.printf("Le personnage "+p.getNom()+" est mort.\n");
listeDesMorts.add(p);
nbMort ++;
}
}
for (Personnage p : listeDesMorts){
jeu.ennemiMort(p);
if (jeu.tailleEquipeEnnemi() == 0){
finDePartie = 1;
System.out.println("Toute l'équipe ennemi est morte\nVous avez GAGNÉ.");
break;
}
}
if (nbMort == 0){
System.out.println("Il n'y a eu aucun mort.");
}
annonceEtatEnnemi();
}
private void annonceEtat(){
for (Personnage p : jeu.getEquipe().getEquipe()){
if (p.getEtat() != null){
System.out.println(p.toString()+" a l'état : "+p.getEtat());
}
}
}
private void annonceEtatEnnemi(){
for (Personnage p : jeu.getEquipeEnnemi().getEquipe()){
if (p.getEtat() != null){
System.out.println(p.toString()+" a l'état : "+p.getEtat());
}
}
}
}
......@@ -23,14 +23,26 @@ public class Equipe implements Groupe{
return equipe;
}
public Personnage getPersonnage(int i){
return equipe.get(i);
}
public void ajouter(Personnage personnage){
this.equipe.add(personnage);
}
public void supprimer(Personnage personnage){
this.equipe.remove(personnage);
}
public void ajouter(Equipe equipe){
this.equipe.addAll(equipe.getEquipe());
}
public int getTaille(){
return equipe.size();
}
public void accepter(VisiteurGroupe visiteur) {
visiteur.visiter(this);
}
......
......@@ -2,7 +2,7 @@ package modele;
public interface Facade {
void creerEquipe(String nomEquipe);
void supprimerEquipe(String nomEquipe);
void supprimerEquipe();
void produireAttaque(Equipe equipe);
void ameliorerEquipe(Equipe equipe);
}
package modele;
import modele.DPFabrique.Constructeur;
import modele.DPVisiteur.NiveauVisiteur;
import modele.DPVisiteur.VisiteurGroupe;
public class Jeu implements Facade {
private Equipe equipe1;
private Equipe equipe2;
private Equipe equipe;
private Equipe equipeEnnemi;
private int nbAttaqueEquipe;
private Constructeur constructeur;
private VisiteurGroupe visiteurGroupe;
@Override
public void creerEquipe(String nomEquipe) {
equipe1 = new Equipe(nomEquipe);
equipe2 = new Equipe("Ennemi");
equipe = new Equipe(nomEquipe);
nbAttaqueEquipe = 0;
equipeEnnemi = new Equipe("Ennemi");
visiteurGroupe = new NiveauVisiteur();
}
@Override
public void supprimerEquipe(String nomEquipe) {
public void supprimerEquipe() {
equipe = null;
}
@Override
public void produireAttaque(Equipe equipe) {
equipe.getPersonnage(nbAttaqueEquipe).attaquer(getEquipeEnnemi().getPersonnage(getEquipeEnnemi().getTaille()-1));
if (nbAttaqueEquipe == (Configuration.getInstance().getTailleMaxEquipe() - 1)){
nbAttaqueEquipe = 0;
}else {
nbAttaqueEquipe++;
}
}
@Override
public void ameliorerEquipe(Equipe equipe) {
equipe.augmenterNiveau(1);
visiteurGroupe.visiter(equipe);
}
public Equipe getEquipe() {
return equipe;
}
public Equipe getEquipeEnnemi() {
return equipeEnnemi;
}
public Constructeur getConstructeur() {
return constructeur;
}
public void setConstructeur(Constructeur constructeur) {
this.constructeur = constructeur;
}
public int getNbAttaqueEquipe() {
return nbAttaqueEquipe;
}
public void personnageMort(Personnage personnage){
this.equipe.supprimer(personnage);
}
public void ennemiMort(Personnage personnage){
this.equipeEnnemi.supprimer(personnage);
}
public int tailleEquipe(){
return this.equipe.getTaille();
}
public int tailleEquipeEnnemi(){
return this.equipeEnnemi.getTaille();
}
}
package modele;
import modele.DPState.Etat;
import modele.DPStrategie.ConcreteStrategieNeutre;
import modele.DPStrategie.Strategie;
import modele.DPVisiteur.VisiteurGroupe;
......@@ -17,6 +18,7 @@ public abstract class Personnage implements Groupe{
this.niveau = niveau;
this.nom = nom;
this.arme = arme;
this.strategie = new ConcreteStrategieNeutre();
}
public void augmenterNiveau(int augmentation){
......@@ -67,4 +69,9 @@ public abstract class Personnage implements Groupe{
public Etat getEtat() {
return etat;
}
@Override
public String toString() {
return nom + " ("+pointsDeVie+" PV / niveau "+niveau+")";
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment