Récupération des objets et correction des voisins.
This commit is contained in:
parent
f6da70c020
commit
b45d628ca6
@ -8,5 +8,5 @@ import utils.Tuple;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public interface ComportementAction {
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t);
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t);
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import java.util.Random;
|
||||
public class ComportementActionChangerCouleurCase implements ComportementAction {
|
||||
|
||||
@Override
|
||||
public void executerAction(Personnage p, Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t) {
|
||||
public void executerAction(Personnage p, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
|
||||
ArrayList<CaseAbstraite> cases = t.c;
|
||||
int size = cases.size();
|
||||
int item = new Random().nextInt(size);
|
||||
|
@ -10,7 +10,7 @@ import java.util.ArrayList;
|
||||
public class ComportementActionRamasserNeige implements ComportementAction {
|
||||
|
||||
@Override
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t) {
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -11,20 +11,28 @@ import java.util.Random;
|
||||
public class ComportementActionSeDeplacer implements ComportementAction {
|
||||
|
||||
@Override
|
||||
public void executerAction(Personnage perso, Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t) {
|
||||
public void executerAction(Personnage perso, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
|
||||
ArrayList<CaseAbstraite> cases = t.c;
|
||||
int size = cases.size();
|
||||
int item = new Random().nextInt(size);
|
||||
System.out.println("Je suis en " + perso.getCaseCourante().getCoord().toString());
|
||||
ArrayList<ObjetAbstrait> 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());
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import java.util.ArrayList;
|
||||
public class ComportementActionTirerBalon implements ComportementAction {
|
||||
|
||||
@Override
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t) {
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -10,7 +10,7 @@ import java.util.ArrayList;
|
||||
public class ComportementActionTirerBouleDeNeige implements ComportementAction {
|
||||
|
||||
@Override
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t) {
|
||||
public void executerAction(Personnage joueur, Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -28,10 +28,10 @@ public class Personnage extends PersonnagesAbstraits {
|
||||
protected double portee;
|
||||
protected EAction action;
|
||||
protected ComportementAction Action;
|
||||
HashSet<CaseAbstraite> voisinsActuels = new HashSet<CaseAbstraite>();
|
||||
private EtatPersonnageAbstrait etatCourant;
|
||||
private HashMap<PointsCardinaux, CaseAbstraite> 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)
|
||||
@ -75,34 +75,32 @@ public class Personnage extends PersonnagesAbstraits {
|
||||
}
|
||||
}
|
||||
|
||||
public Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> AnalyseSituation() {
|
||||
public Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> AnalyseSituation() {
|
||||
HashSet<CaseAbstraite> voisinsDesVoisins = getCaseAbstraitesForPortee();
|
||||
voisinsActuels = new HashSet<CaseAbstraite>();
|
||||
voisinsDesVoisins.remove(this.getCaseCourante());
|
||||
ArrayList<CaseAbstraite> casesVoisines = new ArrayList<CaseAbstraite>(voisinsDesVoisins);
|
||||
ArrayList<ObjetAbstrait> objets = rechercheObjetProche(voisinsDesVoisins);
|
||||
ArrayList<Personnage> personnages = rechercheJoueur(voisinsDesVoisins);
|
||||
|
||||
casesVoisines.remove(this.caseCourante);
|
||||
return new Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>>(objets, personnages, casesVoisines);
|
||||
return new Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>>(personnages, objets, casesVoisines);
|
||||
}
|
||||
|
||||
public void Execution(Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t) {
|
||||
public void Execution(Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> t) {
|
||||
Action.executerAction(this, t);
|
||||
}
|
||||
|
||||
|
||||
public HashMap<PointsCardinaux, CaseAbstraite> voisinsPortee(CaseAbstraite c, int rayon) {
|
||||
HashMap<PointsCardinaux, CaseAbstraite> voisinsActuels = new HashMap<PointsCardinaux, CaseAbstraite>();
|
||||
public HashSet<CaseAbstraite> voisinsPortee(CaseAbstraite c, int rayon) {
|
||||
HashMap<PointsCardinaux, CaseAbstraite> 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<ObjetAbstrait> rechercheObjetProche(HashSet<CaseAbstraite> voisinsDesVoisins) {
|
||||
@ -117,9 +115,9 @@ public class Personnage extends PersonnagesAbstraits {
|
||||
}
|
||||
|
||||
protected HashSet<CaseAbstraite> getCaseAbstraitesForPortee() {
|
||||
HashSet<CaseAbstraite> voisinsDesVoisins = new HashSet<CaseAbstraite>();
|
||||
voisinsDesVoisins.addAll(voisinsPortee(this.caseCourante, 0).values());
|
||||
return voisinsDesVoisins;
|
||||
HashSet<CaseAbstraite> voisins = voisinsPortee(this.caseCourante, 0);
|
||||
voisins.remove(getCaseCourante());
|
||||
return voisins;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> 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);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user