mirror of
https://forge.univ-lyon1.fr/tplifap4/gyromite_ya.git
synced 2024-02-27 13:31:49 +01:00
ajout notion de mort, les entites peuvent mourir, et ca ne plante pas
This commit is contained in:
parent
304a9c851a
commit
2435e0308c
@ -8,7 +8,7 @@ public class Gravite extends RealisateurDeDeplacement {
|
||||
boolean ret = false;
|
||||
|
||||
for (ElementDynamique e : lstEntitesDynamiques) {
|
||||
if(e instanceof Entite) {
|
||||
if(e instanceof Entite && !((Entite) e).estMort()) {
|
||||
ElementPhysique eBas = ((Entite) e).regarderDansLaDirection(Direction.bas);
|
||||
ElementFond eFond = ((Entite) e).regarderDerriereSoit();
|
||||
if (!(eFond != null && eFond.peutPermettreDeMonterDescendre())
|
||||
|
@ -7,13 +7,12 @@ public class IA extends RealisateurDeDeplacement {
|
||||
protected boolean realiserDeplacement() {
|
||||
boolean ret = false;
|
||||
for (ElementDynamique e : lstEntitesDynamiques)
|
||||
if (e instanceof modele.donnees.IA) {
|
||||
if (e instanceof modele.donnees.IA && !((modele.donnees.IA) e).estMort()) {
|
||||
modele.donnees.IA ia = (modele.donnees.IA) e;
|
||||
ia.regarderDansLaDirection(Direction.droite);
|
||||
if (ia.alt < 2) {
|
||||
ia.alt++;
|
||||
} else {
|
||||
|
||||
if(ia.avancerDirectionChoisie(ia.d) == false){
|
||||
ia.d = Direction.inversDir(ia.d);
|
||||
ia.avancerDirectionChoisie(ia.d);
|
||||
|
@ -157,8 +157,8 @@ public class Jeu {
|
||||
if (retour) {
|
||||
deplacerEntite(pCourant, pCible, ent);
|
||||
}
|
||||
} else if((d == Direction.haut || d == Direction.bas) && objetALaPosition(pCible) instanceof Decor) {
|
||||
killPlayer(ent);
|
||||
} else if((d == Direction.haut || d == Direction.bas) && objetALaPosition(pCible) instanceof Decor && ((Entite) e).peutEtreEcrase()) {
|
||||
killEntite(ent, pCourant);
|
||||
}
|
||||
} else if (e instanceof modele.donnees.Items) {
|
||||
retour = true;
|
||||
@ -168,6 +168,17 @@ public class Jeu {
|
||||
return retour;
|
||||
}
|
||||
|
||||
private void killEntite(Entite e, Point pCourant) {
|
||||
grilleEntites[pCourant.x][pCourant.y][1] = null;
|
||||
map.put(e, null);
|
||||
|
||||
e.tuer();
|
||||
|
||||
if (e instanceof Heros)
|
||||
killPlayer(e);
|
||||
|
||||
}
|
||||
// TODO
|
||||
private void killPlayer(Entite e) {
|
||||
System.out.println("Techniquement le joueur est mort");
|
||||
}
|
||||
@ -226,7 +237,7 @@ public class Jeu {
|
||||
|
||||
private void retirerItem(Point pCourant, modele.donnees.Items elt) {
|
||||
grilleEntites[pCourant.x][pCourant.y][1] = null;
|
||||
map.put((ElementDynamique) elt, new Point(-1, -1));
|
||||
map.put(elt, null);
|
||||
}
|
||||
|
||||
/** Indique si p est contenu dans la grille
|
||||
@ -266,6 +277,9 @@ public class Jeu {
|
||||
Point orig = map.get(sujet);
|
||||
Point dest = map.get(cible);
|
||||
|
||||
if(orig == null || dest == null)
|
||||
return Direction.gauche;
|
||||
|
||||
if(orig.getX() - dest.getX() > 0)
|
||||
return Direction.gauche;
|
||||
else
|
||||
@ -276,6 +290,10 @@ public class Jeu {
|
||||
public double getDistance(ElementDynamique sujet, ElementDynamique cible) {
|
||||
Point orig = map.get(sujet);
|
||||
Point dest = map.get(cible);
|
||||
|
||||
if(orig == null || dest == null)
|
||||
return 0;
|
||||
|
||||
return orig.distance(dest);
|
||||
}
|
||||
|
||||
|
@ -9,11 +9,23 @@ import modele.calculs.Direction;
|
||||
import modele.calculs.Jeu;
|
||||
|
||||
public abstract class Entite extends ElementPhysique implements ElementDynamique {
|
||||
|
||||
boolean mort = false;
|
||||
|
||||
public Entite(Jeu jeu) {
|
||||
super(jeu);
|
||||
}
|
||||
|
||||
public void tuer() {
|
||||
mort = true;
|
||||
}
|
||||
public boolean estMort() {
|
||||
return mort;
|
||||
}
|
||||
|
||||
public boolean avancerDirectionChoisie(Direction d) {
|
||||
if(estMort())
|
||||
return false;
|
||||
return jeu.deplacerEntite(this, d);
|
||||
}
|
||||
public ElementPhysique regarderDansLaDirection(Direction d) {
|
||||
|
@ -24,8 +24,10 @@ public class IA extends Entite {
|
||||
}**/
|
||||
@Override
|
||||
public boolean avancerDirectionChoisie(Direction d) {
|
||||
return jeu.deplacerEntite(this, jeu.getDistance(this,jeu.getHector()) > 3.0 ? d : jeu.getDirection(this,jeu.getHector()));
|
||||
}
|
||||
if(estMort())
|
||||
return false;
|
||||
return jeu.deplacerEntite(this, jeu.getDistance(this,jeu.getHector()) > 3.0 ? d : jeu.getDirection(this,jeu.getHector()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean peutEtreEcrase() {
|
||||
|
Loading…
Reference in New Issue
Block a user