mirror of
https://forge.univ-lyon1.fr/tplifap4/gyromite_ya.git
synced 2024-02-27 13:31:49 +01:00
Deplacement haut bas + retire du saut + gestion des cordes
This commit is contained in:
parent
6e20719471
commit
d4e7fc176b
@ -1,9 +1,12 @@
|
||||
package modele.calculs;
|
||||
|
||||
import modele.donnees.ElementFond;
|
||||
import modele.donnees.ElementPhysique;
|
||||
import modele.donnees.Entite;
|
||||
import modele.donnees.EntiteDynamique;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
/**
|
||||
* Controle4Directions permet d'appliquer une direction (connexion avec le clavier) à un ensemble d'entités dynamiques
|
||||
*/
|
||||
@ -33,15 +36,21 @@ public class Controle4Directions extends RealisateurDeDeplacement {
|
||||
if (e.avancerDirectionChoisie(directionCourante))
|
||||
ret = true;
|
||||
break;
|
||||
|
||||
case bas:
|
||||
case haut:
|
||||
ElementFond ef = e.regarderDerriereSoit();
|
||||
|
||||
if(ef != null && ef.peutPermettreDeMonterDescendre()) {
|
||||
ret = e.avancerDirectionChoisie(directionCourante);
|
||||
}
|
||||
/*
|
||||
// on ne peut pas sauter sans prendre appui
|
||||
// (attention, test d'appui réalisé à partir de la position courante, si la gravité à été appliquée, il ne s'agit pas de la position affichée, amélioration possible)
|
||||
ElementPhysique eBas = e.regarderDansLaDirection(Direction.bas);
|
||||
if (eBas != null && eBas.peutServirDeSupport()) {
|
||||
if (e.avancerDirectionChoisie(Direction.haut))
|
||||
ret = true;
|
||||
}
|
||||
}*/
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1,9 +1,6 @@
|
||||
package modele.calculs;
|
||||
|
||||
import modele.donnees.ElementPhysique;
|
||||
import modele.donnees.Entite;
|
||||
import modele.donnees.EntiteDynamique;
|
||||
import modele.donnees.ObjetGyromide;
|
||||
import modele.donnees.*;
|
||||
|
||||
public class Gravite extends RealisateurDeDeplacement {
|
||||
@Override
|
||||
@ -12,7 +9,9 @@ public class Gravite extends RealisateurDeDeplacement {
|
||||
|
||||
for (Entite e : lstEntitesDynamiques) {
|
||||
ElementPhysique eBas = e.regarderDansLaDirection(Direction.bas);
|
||||
if (eBas == null || (eBas != null && !eBas.peutServirDeSupport())) {
|
||||
ElementFond eFond = e.regarderDerriereSoit();
|
||||
if(!(eFond != null && eFond.peutPermettreDeMonterDescendre())
|
||||
&& eBas == null || (eBas != null && !eBas.peutServirDeSupport())) {
|
||||
if (e.avancerDirectionChoisie(Direction.bas))
|
||||
ret = true;
|
||||
}
|
||||
|
@ -100,6 +100,11 @@ public class Jeu {
|
||||
Point positionEntite = map.get(e);
|
||||
return objetALaPosition(calculerPointCible(positionEntite, d));
|
||||
}
|
||||
|
||||
public ElementFond regarderDerriereSoit(Entite e) {
|
||||
Point positionEntite = map.get(e);
|
||||
return fondALaPosition(positionEntite);
|
||||
}
|
||||
|
||||
/** Si le déplacement de l'entité est autorisé (pas de mur ou autre entité), il est réalisé
|
||||
* Sinon, rien n'est fait.
|
||||
@ -168,11 +173,7 @@ public class Jeu {
|
||||
}
|
||||
|
||||
private ElementPhysique objetALaPosition(Point p) {
|
||||
ObjetGyromide retour = null;
|
||||
|
||||
if (contenuDansGrille(p)) {
|
||||
retour = grilleEntites[p.x][p.y][0];
|
||||
}
|
||||
ObjetGyromide retour = objetGyALaPosition(p, 0);
|
||||
|
||||
if(retour instanceof ElementPhysique)
|
||||
return (ElementPhysique) retour;
|
||||
@ -180,6 +181,24 @@ public class Jeu {
|
||||
return null;
|
||||
}
|
||||
|
||||
private ElementFond fondALaPosition(Point p) {
|
||||
ObjetGyromide retour = objetGyALaPosition(p, 1);
|
||||
|
||||
if(retour instanceof ElementFond)
|
||||
return (ElementFond) retour;
|
||||
else
|
||||
return null;
|
||||
}
|
||||
|
||||
private ObjetGyromide objetGyALaPosition(Point p, int prof) {
|
||||
ObjetGyromide retour = null;
|
||||
|
||||
if (contenuDansGrille(p)) {
|
||||
retour = grilleEntites[p.x][p.y][prof];
|
||||
}
|
||||
return retour;
|
||||
}
|
||||
|
||||
public Ordonnanceur getOrdonnanceur() {
|
||||
return ordonnanceur;
|
||||
}
|
||||
|
@ -19,4 +19,7 @@ public abstract class Entite extends ElementPhysique implements ElementDynamique
|
||||
public ElementPhysique regarderDansLaDirection(Direction d) {
|
||||
return jeu.regarderDansLaDirection(this, d);
|
||||
}
|
||||
public ElementFond regarderDerriereSoit() {
|
||||
return jeu.regarderDerriereSoit(this);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user