Skip to content
Snippets Groups Projects
Commit e4d60322 authored by tompotio's avatar tompotio
Browse files

V7

parent 61d45b9e
No related branches found
No related tags found
No related merge requests found
package DP.Etat;
import Personnage.Personnage;
public abstract class Etat {
protected Personnage personnage;
public Etat(Personnage personnage){
this.personnage = personnage;
}
public abstract int attaquer();
public abstract void neRienFaire();
}
package Etat;
import DP.Etat.Etat;
import Personnage.Personnage;
public class Actif extends Etat {
public Actif(Personnage personnage){
super(personnage);
}
@Override
public int attaquer() {
personnage.setEtat(new EnAttaque(personnage));
return personnage.getStrategie().attaque(personnage.getArme().getDegat());
}
@Override
public void neRienFaire() {
// Ne fait rien
}
}
package Etat;
import DP.Etat.Etat;
import Personnage.Personnage;
public class Blesse extends Etat {
private int degatParTour;
private int compteur;
public Blesse(Personnage personnage, int degatParTour, int nombreDeTour){
super(personnage);
this.degatParTour = degatParTour;
compteur = nombreDeTour;
}
@Override
public int attaquer() {
compteur -= 1;
personnage.estAttaque(degatParTour);
if(compteur == 0){
personnage.setEtat(new Actif(personnage));
return personnage.attaquer();
}
return personnage.getStrategie().attaque((int) (personnage.getArme().getDegat() * 0.9));
}
@Override
public void neRienFaire() {
compteur -= 1;
personnage.estAttaque(degatParTour);
if(compteur == 0){
personnage.setEtat(new Actif(personnage));
}
}
}
package Etat;
import DP.Etat.Etat;
import Personnage.Personnage;
public class EnAttaque extends Etat {
public EnAttaque(Personnage personnage){
super(personnage);
}
@Override
public int attaquer() {
return personnage.getStrategie().attaque(personnage.getArme().getDegat());
}
@Override
public void neRienFaire() {
personnage.setEtat(new Actif(personnage));
personnage.getEtat().neRienFaire();
}
}
package Etat;
import DP.Etat.Etat;
import Personnage.Personnage;
public class Endormi extends Etat {
private int compteur;
public Endormi(Personnage personnage, int nombreDeTour){
super(personnage);
compteur = nombreDeTour;
}
@Override
public int attaquer() {
compteur -= 1;
if(compteur == 0){
personnage.setEtat(new Actif(personnage));
return personnage.attaquer();
}
return 0;
}
@Override
public void neRienFaire() {
compteur -= 1;
if(compteur == 0){
personnage.setEtat(new Actif(personnage));
}
}
}
......@@ -3,6 +3,7 @@ import Arme.*;
import DP.Composite.EquipeI;
import DP.Strategie.Strategie;
import DP.Visiteur.PersonnageVisite;
import DP.Etat.*;
public abstract class Personnage implements EquipeI, PersonnageVisite {
private int pointsDeVie;
......@@ -11,6 +12,7 @@ public abstract class Personnage implements EquipeI, PersonnageVisite {
private int defense;
protected Arme arme;
protected Strategie strategie;
protected Etat etat;
public Personnage(String nom, int pointsDeVie){
this.nom = nom;
this.pointsDeVie = pointsDeVie;
......@@ -37,11 +39,25 @@ public abstract class Personnage implements EquipeI, PersonnageVisite {
public void setStrategie(Strategie strategie){
this.strategie = strategie;
}
public Strategie getStrategie() {
return strategie;
}
public void estAttaque(int degat){
strategie.estAttaque(degat);
}
public int attaquer(){
return strategie.attaque(arme.getDegat());
return etat.attaquer();
}
public void setEtat(Etat etat){
this.etat = etat;
}
public Etat getEtat(){
return etat;
}
public void neRienFaire(){
etat.neRienFaire();
}
public abstract boolean estUnGuerisseur();
public abstract boolean estUnGuerrier();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment