From 3215a06a9c7210dd787dac0ea5bd77feb1dde125 Mon Sep 17 00:00:00 2001 From: CCAZOT Date: Wed, 28 Jan 2015 18:13:01 +0100 Subject: [PATCH] lien Etat et strategie --- src/Cases/CaseAbstraite.java | 2 + src/Comportements/EAction.java | 5 ++ src/Etats/EtatPersonnageAbstrait.java | 4 ++ src/Etats/EtatPersonnageCombattant.java | 32 +++++++++++++ src/Etats/EtatPersonnageKO.java | 27 +++++++++++ src/Etats/EtatPersonnageOK.java | 61 +++++++++++++++++++++++++ src/Person/Personnage.java | 34 ++++++++++++-- 7 files changed, 161 insertions(+), 4 deletions(-) create mode 100644 src/Comportements/EAction.java create mode 100644 src/Etats/EtatPersonnageCombattant.java diff --git a/src/Cases/CaseAbstraite.java b/src/Cases/CaseAbstraite.java index 780a8d1..84f2cc7 100644 --- a/src/Cases/CaseAbstraite.java +++ b/src/Cases/CaseAbstraite.java @@ -1,5 +1,6 @@ package Cases; +import Objets.ObjetAbstrait; import Person.Personnage; import java.util.HashMap; @@ -7,6 +8,7 @@ import java.util.HashMap; public abstract class CaseAbstraite { Personnage occupant; + HashMap voisins; Coordonnees coord; diff --git a/src/Comportements/EAction.java b/src/Comportements/EAction.java new file mode 100644 index 0000000..8fe4260 --- /dev/null +++ b/src/Comportements/EAction.java @@ -0,0 +1,5 @@ +package Comportements; + +public enum EAction { +ChangerCouleurCase,RamasserNeige,SeDeplacer,TirerBalon,TirerBouleDeNeige,Null +} diff --git a/src/Etats/EtatPersonnageAbstrait.java b/src/Etats/EtatPersonnageAbstrait.java index f1f4e76..c03e2a7 100644 --- a/src/Etats/EtatPersonnageAbstrait.java +++ b/src/Etats/EtatPersonnageAbstrait.java @@ -9,4 +9,8 @@ public abstract class EtatPersonnageAbstrait { protected EtatPersonnageAbstrait(Personnage perso){ this.joueur = perso; } + + public abstract void AnalyseJoueur(); + public abstract void ExecutionJoueur(); + public abstract void ConflitJoueur(); } diff --git a/src/Etats/EtatPersonnageCombattant.java b/src/Etats/EtatPersonnageCombattant.java new file mode 100644 index 0000000..d100e96 --- /dev/null +++ b/src/Etats/EtatPersonnageCombattant.java @@ -0,0 +1,32 @@ +package Etats; + +import Person.Personnage; + +public class EtatPersonnageCombattant extends EtatPersonnageAbstrait { + + //Etat d'un personnage avec un marteau, cible les joueurs et ignore le reste. + + protected EtatPersonnageCombattant(Personnage perso) { + super(perso); + // TODO Auto-generated constructor stub + } + + @Override + public void AnalyseJoueur() { + // TODO Auto-generated method stub + + } + + @Override + public void ExecutionJoueur() { + // TODO Auto-generated method stub + + } + + @Override + public void ConflitJoueur() { + // TODO Auto-generated method stub + + } + +} diff --git a/src/Etats/EtatPersonnageKO.java b/src/Etats/EtatPersonnageKO.java index 6340945..5d740e0 100644 --- a/src/Etats/EtatPersonnageKO.java +++ b/src/Etats/EtatPersonnageKO.java @@ -3,10 +3,37 @@ package Etats; import Person.Personnage; public class EtatPersonnageKO extends EtatPersonnageAbstrait { + + private int nbTourKO; public EtatPersonnageKO(Personnage perso) { super(perso); // TODO Auto-generated constructor stub + + this.nbTourKO = 3; + } + + @Override + public void AnalyseJoueur() { + // TODO Auto-generated method stub + + } + + @Override + public void ExecutionJoueur() { + // TODO Auto-generated method stub + + nbTourKO--; + if (nbTourKO==0){ + this.joueur.ChangeEtat(EEtat.EtatOK); + } + + } + + @Override + public void ConflitJoueur() { + // TODO Auto-generated method stub + } } diff --git a/src/Etats/EtatPersonnageOK.java b/src/Etats/EtatPersonnageOK.java index cc362ac..0bd6954 100644 --- a/src/Etats/EtatPersonnageOK.java +++ b/src/Etats/EtatPersonnageOK.java @@ -1,12 +1,73 @@ package Etats; +import Comportements.ComportementAction; +import Comportements.ComportementActionChangerCouleurCase; +import Comportements.ComportementActionRamasserNeige; +import Comportements.ComportementActionSeDeplacer; +import Comportements.ComportementActionTirerBalon; +import Comportements.ComportementActionTirerBouleDeNeige; +import Comportements.EAction; import Person.Personnage; public class EtatPersonnageOK extends EtatPersonnageAbstrait { + + private ComportementAction Action; public EtatPersonnageOK(Personnage perso) { super(perso); // TODO Auto-generated constructor stub + + this.ChangerAction(EAction.Null); } + @Override + public void AnalyseJoueur() { + // TODO Auto-generated method stub + + } + + @Override + public void ExecutionJoueur() { + // TODO Auto-generated method stub + Action.executerAction(this.joueur.getCaseCourante()); + } + + @Override + public void ConflitJoueur() { + // TODO Auto-generated method stub + + } + + public void ChangerAction(EAction nouvelAction){ + + switch(nouvelAction) + { + case ChangerCouleurCase: + Action = new ComportementActionChangerCouleurCase(); + break; + case RamasserNeige: + Action = new ComportementActionRamasserNeige(); + break; + case SeDeplacer: + Action = new ComportementActionSeDeplacer(); + break; + case TirerBalon: + Action = new ComportementActionTirerBalon(); + break; + case TirerBouleDeNeige: + Action = new ComportementActionTirerBouleDeNeige(); + break; + case Null: + Action = null; + break; + default: + break; + + } + + this.joueur.setAction(nouvelAction); + } + + + } diff --git a/src/Person/Personnage.java b/src/Person/Personnage.java index d473155..6ad1380 100644 --- a/src/Person/Personnage.java +++ b/src/Person/Personnage.java @@ -2,6 +2,7 @@ package Person; import Cases.CaseAbstraite; import Comportements.ComportementAction; +import Comportements.EAction; import Composition.PersonnagesAbstraits; import Etats.EEtat; import Etats.EtatPersonnageAbstrait; @@ -9,13 +10,16 @@ import Etats.EtatPersonnageKO; import Etats.EtatPersonnageOK; public class Personnage extends PersonnagesAbstraits { + + protected CaseAbstraite caseCourante; protected String nom; protected String groupe; protected double pointsDeVie; protected double force; protected double vitesse; - protected ComportementAction action; + protected double porter; + protected EAction action; private EtatPersonnageAbstrait etatCourant; protected Personnage(String name, ComportementAction c) { @@ -23,10 +27,11 @@ public class Personnage extends PersonnagesAbstraits { this.pointsDeVie = 100; this.force = 10; this.vitesse = 1; + this.porter = 2; this.caseCourante = null; this.etatCourant = new EtatPersonnageOK(this); - this.action = c; + this.action = EAction.Null; } protected Personnage(String name, double lifePoint, double strength, double speed, ComportementAction a) { @@ -37,7 +42,7 @@ public class Personnage extends PersonnagesAbstraits { this.caseCourante=null; this.etatCourant= new EtatPersonnageOK(this); - this.action = a; + this.action = EAction.Null; } @@ -115,14 +120,35 @@ public class Personnage extends PersonnagesAbstraits { public void setCaseCourante(CaseAbstraite caseCourante) { this.caseCourante = caseCourante; } + + public double getPorter() { + return porter; + } + + public void setPorter(double porter) { + this.porter = porter; + } + + public EAction getAction() { + return action; + } + + public void setAction(EAction action) { + this.action = action; + } public void AnalyseSituation() { // Todo + etatCourant.AnalyseJoueur(); } public void Execution() { // Todo - + etatCourant.ExecutionJoueur(); + } + + public void ResoudreLesConflits(){ + etatCourant.ConflitJoueur(); } }