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;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public interface ComportementAction {
|
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 {
|
public class ComportementActionChangerCouleurCase implements ComportementAction {
|
||||||
|
|
||||||
@Override
|
@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;
|
ArrayList<CaseAbstraite> cases = t.c;
|
||||||
int size = cases.size();
|
int size = cases.size();
|
||||||
int item = new Random().nextInt(size);
|
int item = new Random().nextInt(size);
|
||||||
|
@ -10,7 +10,7 @@ import java.util.ArrayList;
|
|||||||
public class ComportementActionRamasserNeige implements ComportementAction {
|
public class ComportementActionRamasserNeige implements ComportementAction {
|
||||||
|
|
||||||
@Override
|
@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 {
|
public class ComportementActionSeDeplacer implements ComportementAction {
|
||||||
|
|
||||||
@Override
|
@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;
|
ArrayList<CaseAbstraite> cases = t.c;
|
||||||
int size = cases.size();
|
ArrayList<ObjetAbstrait> objs = t.o;
|
||||||
int item = new Random().nextInt(size);
|
|
||||||
System.out.println("Je suis en " + perso.getCaseCourante().getCoord().toString());
|
|
||||||
|
|
||||||
CaseAbstraite c = perso.getCaseCourante();
|
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);
|
destination.setOccupant(perso);
|
||||||
perso.setCaseCourante(destination);
|
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 {
|
public class ComportementActionTirerBalon implements ComportementAction {
|
||||||
|
|
||||||
@Override
|
@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 {
|
public class ComportementActionTirerBouleDeNeige implements ComportementAction {
|
||||||
|
|
||||||
@Override
|
@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 double portee;
|
||||||
protected EAction action;
|
protected EAction action;
|
||||||
protected ComportementAction Action;
|
protected ComportementAction Action;
|
||||||
|
HashSet<CaseAbstraite> voisinsActuels = new HashSet<CaseAbstraite>();
|
||||||
private EtatPersonnageAbstrait etatCourant;
|
private EtatPersonnageAbstrait etatCourant;
|
||||||
private HashMap<PointsCardinaux, CaseAbstraite> voisins;
|
private HashMap<PointsCardinaux, CaseAbstraite> voisins;
|
||||||
|
|
||||||
|
|
||||||
protected Personnage(String name, ComportementAction c) {
|
protected Personnage(String name, ComportementAction c) {
|
||||||
this.nom = name;
|
this.nom = name;
|
||||||
this.pointsDeVie = 100;
|
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) {
|
protected Personnage(String name, double lifePoint, double strength, double speed, int portee, ComportementAction a) {
|
||||||
this.nom = name;
|
this.nom = name;
|
||||||
this.pointsDeVie=lifePoint;
|
this.pointsDeVie=lifePoint;
|
||||||
@ -58,7 +59,6 @@ public class Personnage extends PersonnagesAbstraits {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void ChangeEtat(EEtat NouvelEtat)
|
public void ChangeEtat(EEtat NouvelEtat)
|
||||||
{
|
{
|
||||||
switch(NouvelEtat)
|
switch(NouvelEtat)
|
||||||
@ -71,38 +71,36 @@ public class Personnage extends PersonnagesAbstraits {
|
|||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> AnalyseSituation() {
|
public Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>> AnalyseSituation() {
|
||||||
HashSet<CaseAbstraite> voisinsDesVoisins = getCaseAbstraitesForPortee();
|
HashSet<CaseAbstraite> voisinsDesVoisins = getCaseAbstraitesForPortee();
|
||||||
|
voisinsActuels = new HashSet<CaseAbstraite>();
|
||||||
|
voisinsDesVoisins.remove(this.getCaseCourante());
|
||||||
ArrayList<CaseAbstraite> casesVoisines = new ArrayList<CaseAbstraite>(voisinsDesVoisins);
|
ArrayList<CaseAbstraite> casesVoisines = new ArrayList<CaseAbstraite>(voisinsDesVoisins);
|
||||||
ArrayList<ObjetAbstrait> objets = rechercheObjetProche(voisinsDesVoisins);
|
ArrayList<ObjetAbstrait> objets = rechercheObjetProche(voisinsDesVoisins);
|
||||||
ArrayList<Personnage> personnages = rechercheJoueur(voisinsDesVoisins);
|
ArrayList<Personnage> personnages = rechercheJoueur(voisinsDesVoisins);
|
||||||
|
|
||||||
casesVoisines.remove(this.caseCourante);
|
return new Tuple<ArrayList<Personnage>, ArrayList<ObjetAbstrait>, ArrayList<CaseAbstraite>>(personnages, objets, casesVoisines);
|
||||||
return new Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>>(objets, personnages, 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);
|
Action.executerAction(this, t);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public HashSet<CaseAbstraite> voisinsPortee(CaseAbstraite c, int rayon) {
|
||||||
public HashMap<PointsCardinaux, CaseAbstraite> voisinsPortee(CaseAbstraite c, int rayon) {
|
|
||||||
HashMap<PointsCardinaux, CaseAbstraite> voisinsActuels = new HashMap<PointsCardinaux, CaseAbstraite>();
|
|
||||||
HashMap<PointsCardinaux, CaseAbstraite> v = c.getVoisins();
|
HashMap<PointsCardinaux, CaseAbstraite> v = c.getVoisins();
|
||||||
if ((rayon + 1) == this.getPortee()) {
|
if ((rayon + 1) == this.getPortee()) {
|
||||||
// voisinsActuels.putAll(v);
|
voisinsActuels.addAll(c.getVoisins().values());
|
||||||
return c.getVoisins();
|
|
||||||
} else {
|
} else {
|
||||||
int r = rayon + 1;
|
int r = rayon + 1;
|
||||||
for (PointsCardinaux mapKey : v.keySet()) {
|
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) {
|
public ArrayList<ObjetAbstrait> rechercheObjetProche(HashSet<CaseAbstraite> voisinsDesVoisins) {
|
||||||
@ -117,9 +115,9 @@ public class Personnage extends PersonnagesAbstraits {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected HashSet<CaseAbstraite> getCaseAbstraitesForPortee() {
|
protected HashSet<CaseAbstraite> getCaseAbstraitesForPortee() {
|
||||||
HashSet<CaseAbstraite> voisinsDesVoisins = new HashSet<CaseAbstraite>();
|
HashSet<CaseAbstraite> voisins = voisinsPortee(this.caseCourante, 0);
|
||||||
voisinsDesVoisins.addAll(voisinsPortee(this.caseCourante, 0).values());
|
voisins.remove(getCaseCourante());
|
||||||
return voisinsDesVoisins;
|
return voisins;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ import Objets.ObjetAvecBonusVitesse;
|
|||||||
import Observateur.Organisation;
|
import Observateur.Organisation;
|
||||||
import Person.Personnage;
|
import Person.Personnage;
|
||||||
import utils.InterfaceConsole;
|
import utils.InterfaceConsole;
|
||||||
import utils.Tuple;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
@ -35,6 +34,7 @@ public class SimulationJeu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void afficheTous() {
|
public void afficheTous() {
|
||||||
|
System.out.println("");
|
||||||
intefaceC.afficherPlateau();
|
intefaceC.afficherPlateau();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -51,8 +51,7 @@ public class SimulationJeu {
|
|||||||
afficheTous();
|
afficheTous();
|
||||||
while (continuer) {
|
while (continuer) {
|
||||||
for (Personnage p : personnages) {
|
for (Personnage p : personnages) {
|
||||||
Tuple<ArrayList<ObjetAbstrait>, ArrayList<Personnage>, ArrayList<CaseAbstraite>> t = p.AnalyseSituation();
|
p.Execution(p.AnalyseSituation());
|
||||||
p.Execution(t);
|
|
||||||
recupererInformations();
|
recupererInformations();
|
||||||
}
|
}
|
||||||
placerDesObjets();
|
placerDesObjets();
|
||||||
@ -84,6 +83,8 @@ public class SimulationJeu {
|
|||||||
for (Personnage p : personnages) {
|
for (Personnage p : personnages) {
|
||||||
int x = rand.nextInt(plateau.length);
|
int x = rand.nextInt(plateau.length);
|
||||||
int y = rand.nextInt(plateau[x].length);
|
int y = rand.nextInt(plateau[x].length);
|
||||||
|
// int x = 0;
|
||||||
|
// int y = 0;
|
||||||
p.setCaseCourante(plateau[x][y]);
|
p.setCaseCourante(plateau[x][y]);
|
||||||
plateau[x][y].ajouterOccupant(p);
|
plateau[x][y].ajouterOccupant(p);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user