Récupération des objets et correction des voisins.

This commit is contained in:
amine 2015-02-01 13:18:11 +01:00
parent f6da70c020
commit b45d628ca6
8 changed files with 40 additions and 33 deletions

View File

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

View File

@ -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);

View File

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

View File

@ -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());
}
}

View File

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

View File

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

View File

@ -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)
@ -71,38 +71,36 @@ public class Personnage extends PersonnagesAbstraits {
break;
default:
break;
}
}
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;
}

View File

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