lien Etat et strategie

This commit is contained in:
CCAZOT 2015-01-28 18:13:01 +01:00
parent 728a8f31a6
commit 3215a06a9c
7 changed files with 161 additions and 4 deletions

View File

@ -1,5 +1,6 @@
package Cases; package Cases;
import Objets.ObjetAbstrait;
import Person.Personnage; import Person.Personnage;
import java.util.HashMap; import java.util.HashMap;
@ -7,6 +8,7 @@ import java.util.HashMap;
public abstract class CaseAbstraite { public abstract class CaseAbstraite {
Personnage occupant; Personnage occupant;
HashMap<PointsCardinaux, CaseAbstraite> voisins; HashMap<PointsCardinaux, CaseAbstraite> voisins;
Coordonnees coord; Coordonnees coord;

View File

@ -0,0 +1,5 @@
package Comportements;
public enum EAction {
ChangerCouleurCase,RamasserNeige,SeDeplacer,TirerBalon,TirerBouleDeNeige,Null
}

View File

@ -9,4 +9,8 @@ public abstract class EtatPersonnageAbstrait {
protected EtatPersonnageAbstrait(Personnage perso){ protected EtatPersonnageAbstrait(Personnage perso){
this.joueur = perso; this.joueur = perso;
} }
public abstract void AnalyseJoueur();
public abstract void ExecutionJoueur();
public abstract void ConflitJoueur();
} }

View File

@ -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
}
}

View File

@ -3,10 +3,37 @@ package Etats;
import Person.Personnage; import Person.Personnage;
public class EtatPersonnageKO extends EtatPersonnageAbstrait { public class EtatPersonnageKO extends EtatPersonnageAbstrait {
private int nbTourKO;
public EtatPersonnageKO(Personnage perso) { public EtatPersonnageKO(Personnage perso) {
super(perso); super(perso);
// TODO Auto-generated constructor stub // 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
} }
} }

View File

@ -1,12 +1,73 @@
package Etats; 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; import Person.Personnage;
public class EtatPersonnageOK extends EtatPersonnageAbstrait { public class EtatPersonnageOK extends EtatPersonnageAbstrait {
private ComportementAction Action;
public EtatPersonnageOK(Personnage perso) { public EtatPersonnageOK(Personnage perso) {
super(perso); super(perso);
// TODO Auto-generated constructor stub // 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);
}
} }

View File

@ -2,6 +2,7 @@ package Person;
import Cases.CaseAbstraite; import Cases.CaseAbstraite;
import Comportements.ComportementAction; import Comportements.ComportementAction;
import Comportements.EAction;
import Composition.PersonnagesAbstraits; import Composition.PersonnagesAbstraits;
import Etats.EEtat; import Etats.EEtat;
import Etats.EtatPersonnageAbstrait; import Etats.EtatPersonnageAbstrait;
@ -9,13 +10,16 @@ import Etats.EtatPersonnageKO;
import Etats.EtatPersonnageOK; import Etats.EtatPersonnageOK;
public class Personnage extends PersonnagesAbstraits { public class Personnage extends PersonnagesAbstraits {
protected CaseAbstraite caseCourante; protected CaseAbstraite caseCourante;
protected String nom; protected String nom;
protected String groupe; protected String groupe;
protected double pointsDeVie; protected double pointsDeVie;
protected double force; protected double force;
protected double vitesse; protected double vitesse;
protected ComportementAction action; protected double porter;
protected EAction action;
private EtatPersonnageAbstrait etatCourant; private EtatPersonnageAbstrait etatCourant;
protected Personnage(String name, ComportementAction c) { protected Personnage(String name, ComportementAction c) {
@ -23,10 +27,11 @@ public class Personnage extends PersonnagesAbstraits {
this.pointsDeVie = 100; this.pointsDeVie = 100;
this.force = 10; this.force = 10;
this.vitesse = 1; this.vitesse = 1;
this.porter = 2;
this.caseCourante = null; this.caseCourante = null;
this.etatCourant = new EtatPersonnageOK(this); this.etatCourant = new EtatPersonnageOK(this);
this.action = c; this.action = EAction.Null;
} }
protected Personnage(String name, double lifePoint, double strength, double speed, ComportementAction a) { 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.caseCourante=null;
this.etatCourant= new EtatPersonnageOK(this); 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) { public void setCaseCourante(CaseAbstraite caseCourante) {
this.caseCourante = 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() { public void AnalyseSituation() {
// Todo // Todo
etatCourant.AnalyseJoueur();
} }
public void Execution() { public void Execution() {
// Todo // Todo
etatCourant.ExecutionJoueur();
}
public void ResoudreLesConflits(){
etatCourant.ConflitJoueur();
} }
} }