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;
|
package modele.calculs;
|
||||||
|
|
||||||
|
import modele.donnees.ElementFond;
|
||||||
import modele.donnees.ElementPhysique;
|
import modele.donnees.ElementPhysique;
|
||||||
import modele.donnees.Entite;
|
import modele.donnees.Entite;
|
||||||
import modele.donnees.EntiteDynamique;
|
import modele.donnees.EntiteDynamique;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Controle4Directions permet d'appliquer une direction (connexion avec le clavier) à un ensemble d'entités dynamiques
|
* 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))
|
if (e.avancerDirectionChoisie(directionCourante))
|
||||||
ret = true;
|
ret = true;
|
||||||
break;
|
break;
|
||||||
|
case bas:
|
||||||
case haut:
|
case haut:
|
||||||
|
ElementFond ef = e.regarderDerriereSoit();
|
||||||
|
|
||||||
|
if(ef != null && ef.peutPermettreDeMonterDescendre()) {
|
||||||
|
ret = e.avancerDirectionChoisie(directionCourante);
|
||||||
|
}
|
||||||
|
/*
|
||||||
// on ne peut pas sauter sans prendre appui
|
// 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)
|
// (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);
|
ElementPhysique eBas = e.regarderDansLaDirection(Direction.bas);
|
||||||
if (eBas != null && eBas.peutServirDeSupport()) {
|
if (eBas != null && eBas.peutServirDeSupport()) {
|
||||||
if (e.avancerDirectionChoisie(Direction.haut))
|
if (e.avancerDirectionChoisie(Direction.haut))
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}*/
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,9 +1,6 @@
|
|||||||
package modele.calculs;
|
package modele.calculs;
|
||||||
|
|
||||||
import modele.donnees.ElementPhysique;
|
import modele.donnees.*;
|
||||||
import modele.donnees.Entite;
|
|
||||||
import modele.donnees.EntiteDynamique;
|
|
||||||
import modele.donnees.ObjetGyromide;
|
|
||||||
|
|
||||||
public class Gravite extends RealisateurDeDeplacement {
|
public class Gravite extends RealisateurDeDeplacement {
|
||||||
@Override
|
@Override
|
||||||
@ -12,7 +9,9 @@ public class Gravite extends RealisateurDeDeplacement {
|
|||||||
|
|
||||||
for (Entite e : lstEntitesDynamiques) {
|
for (Entite e : lstEntitesDynamiques) {
|
||||||
ElementPhysique eBas = e.regarderDansLaDirection(Direction.bas);
|
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))
|
if (e.avancerDirectionChoisie(Direction.bas))
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
|
@ -101,6 +101,11 @@ public class Jeu {
|
|||||||
return objetALaPosition(calculerPointCible(positionEntite, d));
|
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é
|
/** Si le déplacement de l'entité est autorisé (pas de mur ou autre entité), il est réalisé
|
||||||
* Sinon, rien n'est fait.
|
* Sinon, rien n'est fait.
|
||||||
*/
|
*/
|
||||||
@ -168,11 +173,7 @@ public class Jeu {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private ElementPhysique objetALaPosition(Point p) {
|
private ElementPhysique objetALaPosition(Point p) {
|
||||||
ObjetGyromide retour = null;
|
ObjetGyromide retour = objetGyALaPosition(p, 0);
|
||||||
|
|
||||||
if (contenuDansGrille(p)) {
|
|
||||||
retour = grilleEntites[p.x][p.y][0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(retour instanceof ElementPhysique)
|
if(retour instanceof ElementPhysique)
|
||||||
return (ElementPhysique) retour;
|
return (ElementPhysique) retour;
|
||||||
@ -180,6 +181,24 @@ public class Jeu {
|
|||||||
return null;
|
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() {
|
public Ordonnanceur getOrdonnanceur() {
|
||||||
return ordonnanceur;
|
return ordonnanceur;
|
||||||
}
|
}
|
||||||
|
@ -19,4 +19,7 @@ public abstract class Entite extends ElementPhysique implements ElementDynamique
|
|||||||
public ElementPhysique regarderDansLaDirection(Direction d) {
|
public ElementPhysique regarderDansLaDirection(Direction d) {
|
||||||
return jeu.regarderDansLaDirection(this, d);
|
return jeu.regarderDansLaDirection(this, d);
|
||||||
}
|
}
|
||||||
|
public ElementFond regarderDerriereSoit() {
|
||||||
|
return jeu.regarderDerriereSoit(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user