diff --git a/src/Comportements/ComportementAction.java b/src/Comportements/ComportementAction.java index 35bc6de..6e00c7d 100644 --- a/src/Comportements/ComportementAction.java +++ b/src/Comportements/ComportementAction.java @@ -8,5 +8,5 @@ import utils.Tuple; import java.util.ArrayList; public interface ComportementAction { - public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t); + public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t); } diff --git a/src/Comportements/ComportementActionChangerCouleurCase.java b/src/Comportements/ComportementActionChangerCouleurCase.java index a1822cc..8126a73 100644 --- a/src/Comportements/ComportementActionChangerCouleurCase.java +++ b/src/Comportements/ComportementActionChangerCouleurCase.java @@ -13,7 +13,7 @@ import java.util.Random; public class ComportementActionChangerCouleurCase implements ComportementAction { @Override - public void executerAction(Personnage p, Tuple, ArrayList, ArrayList> t) { + public void executerAction(Personnage p, Tuple, ArrayList, ArrayList> t) { ArrayList cases = t.c; int size = cases.size(); int item = new Random().nextInt(size); diff --git a/src/Comportements/ComportementActionRamasserNeige.java b/src/Comportements/ComportementActionRamasserNeige.java index bbeb17a..64e9914 100644 --- a/src/Comportements/ComportementActionRamasserNeige.java +++ b/src/Comportements/ComportementActionRamasserNeige.java @@ -10,7 +10,7 @@ import java.util.ArrayList; public class ComportementActionRamasserNeige implements ComportementAction { @Override - public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t) { + public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t) { } } diff --git a/src/Comportements/ComportementActionSeDeplacer.java b/src/Comportements/ComportementActionSeDeplacer.java index 4d2990a..bbd9c05 100644 --- a/src/Comportements/ComportementActionSeDeplacer.java +++ b/src/Comportements/ComportementActionSeDeplacer.java @@ -11,20 +11,28 @@ import java.util.Random; public class ComportementActionSeDeplacer implements ComportementAction { @Override - public void executerAction(Personnage perso, Tuple, ArrayList, ArrayList> t) { + public void executerAction(Personnage perso, Tuple, ArrayList, ArrayList> t) { ArrayList cases = t.c; - int size = cases.size(); - int item = new Random().nextInt(size); - System.out.println("Je suis en " + perso.getCaseCourante().getCoord().toString()); + ArrayList objs = t.o; CaseAbstraite c = perso.getCaseCourante(); + c.setOccupant(null); - CaseAbstraite destination = cases.get(item); + CaseAbstraite destination; + if (objs.isEmpty()) { + int size = cases.size(); + int item = new Random().nextInt(size); + destination = cases.get(item); + } else { + int size = objs.size(); + int item = new Random().nextInt(size); + destination = objs.get(item).getCaseCourante(); + objs.get(item).setCaseCourante(null); + destination.setObjetOccupant(null); + perso.setObjet(objs.get(item)); + } destination.setOccupant(perso); perso.setCaseCourante(destination); - c.setOccupant(null); - System.out.println("Je suis en " + perso.getCaseCourante().getCoord().toString()); - } } diff --git a/src/Comportements/ComportementActionTirerBalon.java b/src/Comportements/ComportementActionTirerBalon.java index bb00735..527c343 100644 --- a/src/Comportements/ComportementActionTirerBalon.java +++ b/src/Comportements/ComportementActionTirerBalon.java @@ -10,7 +10,7 @@ import java.util.ArrayList; public class ComportementActionTirerBalon implements ComportementAction { @Override - public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t) { + public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t) { } } diff --git a/src/Comportements/ComportementActionTirerBouleDeNeige.java b/src/Comportements/ComportementActionTirerBouleDeNeige.java index 85a3453..143e43d 100644 --- a/src/Comportements/ComportementActionTirerBouleDeNeige.java +++ b/src/Comportements/ComportementActionTirerBouleDeNeige.java @@ -10,7 +10,7 @@ import java.util.ArrayList; public class ComportementActionTirerBouleDeNeige implements ComportementAction { @Override - public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t) { + public void executerAction(Personnage joueur, Tuple, ArrayList, ArrayList> t) { } } diff --git a/src/Person/Personnage.java b/src/Person/Personnage.java index fa15aff..a7cd1c4 100644 --- a/src/Person/Personnage.java +++ b/src/Person/Personnage.java @@ -28,10 +28,10 @@ public class Personnage extends PersonnagesAbstraits { protected double portee; protected EAction action; protected ComportementAction Action; + HashSet voisinsActuels = new HashSet(); private EtatPersonnageAbstrait etatCourant; private HashMap voisins; - protected Personnage(String name, ComportementAction c) { this.nom = name; this.pointsDeVie = 100; @@ -45,6 +45,7 @@ public class Personnage extends PersonnagesAbstraits { } + protected Personnage(String name, double lifePoint, double strength, double speed, int portee, ComportementAction a) { this.nom = name; this.pointsDeVie=lifePoint; @@ -58,7 +59,6 @@ public class Personnage extends PersonnagesAbstraits { } - public void ChangeEtat(EEtat NouvelEtat) { switch(NouvelEtat) @@ -71,38 +71,36 @@ public class Personnage extends PersonnagesAbstraits { break; default: break; - + } } - public Tuple, ArrayList, ArrayList> AnalyseSituation() { + public Tuple, ArrayList, ArrayList> AnalyseSituation() { HashSet voisinsDesVoisins = getCaseAbstraitesForPortee(); + voisinsActuels = new HashSet(); + voisinsDesVoisins.remove(this.getCaseCourante()); ArrayList casesVoisines = new ArrayList(voisinsDesVoisins); ArrayList objets = rechercheObjetProche(voisinsDesVoisins); ArrayList personnages = rechercheJoueur(voisinsDesVoisins); - casesVoisines.remove(this.caseCourante); - return new Tuple, ArrayList, ArrayList>(objets, personnages, casesVoisines); + return new Tuple, ArrayList, ArrayList>(personnages, objets, casesVoisines); } - public void Execution(Tuple, ArrayList, ArrayList> t) { + public void Execution(Tuple, ArrayList, ArrayList> t) { Action.executerAction(this, t); } - - public HashMap voisinsPortee(CaseAbstraite c, int rayon) { - HashMap voisinsActuels = new HashMap(); + public HashSet voisinsPortee(CaseAbstraite c, int rayon) { HashMap v = c.getVoisins(); if ((rayon + 1) == this.getPortee()) { - // voisinsActuels.putAll(v); - return c.getVoisins(); + voisinsActuels.addAll(c.getVoisins().values()); } else { int r = rayon + 1; for (PointsCardinaux mapKey : v.keySet()) { - voisinsActuels.putAll(voisinsPortee(v.get(mapKey), r)); + voisinsActuels.addAll(voisinsPortee(v.get(mapKey), r)); } - return voisinsActuels; } + return voisinsActuels; } public ArrayList rechercheObjetProche(HashSet voisinsDesVoisins) { @@ -117,9 +115,9 @@ public class Personnage extends PersonnagesAbstraits { } protected HashSet getCaseAbstraitesForPortee() { - HashSet voisinsDesVoisins = new HashSet(); - voisinsDesVoisins.addAll(voisinsPortee(this.caseCourante, 0).values()); - return voisinsDesVoisins; + HashSet voisins = voisinsPortee(this.caseCourante, 0); + voisins.remove(getCaseCourante()); + return voisins; } diff --git a/src/SimulationJeu.java b/src/SimulationJeu.java index 587aa84..f7a94c5 100644 --- a/src/SimulationJeu.java +++ b/src/SimulationJeu.java @@ -7,7 +7,6 @@ import Objets.ObjetAvecBonusVitesse; import Observateur.Organisation; import Person.Personnage; import utils.InterfaceConsole; -import utils.Tuple; import java.util.ArrayList; import java.util.Random; @@ -35,6 +34,7 @@ public class SimulationJeu { } public void afficheTous() { + System.out.println(""); intefaceC.afficherPlateau(); } @@ -51,8 +51,7 @@ public class SimulationJeu { afficheTous(); while (continuer) { for (Personnage p : personnages) { - Tuple, ArrayList, ArrayList> t = p.AnalyseSituation(); - p.Execution(t); + p.Execution(p.AnalyseSituation()); recupererInformations(); } placerDesObjets(); @@ -84,6 +83,8 @@ public class SimulationJeu { for (Personnage p : personnages) { int x = rand.nextInt(plateau.length); int y = rand.nextInt(plateau[x].length); +// int x = 0; +// int y = 0; p.setCaseCourante(plateau[x][y]); plateau[x][y].ajouterOccupant(p); }