mirror of
https://forge.univ-lyon1.fr/tplifap4/gyromite_ya.git
synced 2024-02-27 13:31:49 +01:00
Ajout methodes dans jeu : regarder derriere soit + retirer item
This commit is contained in:
parent
6515ac97c6
commit
8c5f7c987c
@ -105,41 +105,53 @@ public class Jeu {
|
||||
Point positionEntite = map.get(e);
|
||||
return fondALaPosition(positionEntite);
|
||||
}
|
||||
|
||||
public ElementPhysique regarderDevantSoit(ElementFond e) {
|
||||
Point positionEntite = map.get(e);
|
||||
return objetALaPosition(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.
|
||||
*/
|
||||
public boolean deplacerEntite(Entite e, Direction d) {
|
||||
public boolean deplacerEntite(ElementDynamique e, Direction d) {
|
||||
boolean retour = false;
|
||||
|
||||
Point pCourant = map.get(e);
|
||||
Point pCible = pCourant;
|
||||
|
||||
|
||||
if(d != null)
|
||||
pCible = calculerPointCible(pCourant, d);
|
||||
|
||||
Point pCible = calculerPointCible(pCourant, d);
|
||||
|
||||
if (contenuDansGrille(pCible) && objetALaPosition(pCible) == null) { // a adapter (collisions murs, etc.)
|
||||
if (contenuDansGrille(pCible) && objetALaPosition(pCible) == null && e instanceof Entite) { // a adapter (collisions murs, etc.)
|
||||
// compter le déplacement : 1 deplacement horizontal et vertical max par pas de temps par entité
|
||||
Entite ent = (Entite) e;
|
||||
|
||||
switch (d) {
|
||||
case bas:
|
||||
case haut:
|
||||
if (cmptDeplV.get(e) == null) {
|
||||
cmptDeplV.put(e, 1);
|
||||
if (cmptDeplV.get(ent) == null) {
|
||||
cmptDeplV.put(ent, 1);
|
||||
|
||||
retour = true;
|
||||
}
|
||||
break;
|
||||
case gauche:
|
||||
case droite:
|
||||
if (cmptDeplH.get(e) == null) {
|
||||
cmptDeplH.put(e, 1);
|
||||
if (cmptDeplH.get(ent) == null) {
|
||||
cmptDeplH.put(ent, 1);
|
||||
retour = true;
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (retour) {
|
||||
deplacerEntite(pCourant, pCible, e);
|
||||
if (retour) {
|
||||
deplacerEntite(pCourant, pCible, ent);
|
||||
}
|
||||
} else if (e instanceof modele.donnees.Items) {
|
||||
retour = true;
|
||||
retirerItem(pCourant, (modele.donnees.Items) e);
|
||||
}
|
||||
|
||||
return retour;
|
||||
@ -165,6 +177,11 @@ public class Jeu {
|
||||
grilleEntites[pCible.x][pCible.y][0] = e;
|
||||
map.put(e, pCible);
|
||||
}
|
||||
|
||||
private void retirerItem(Point pCourant, modele.donnees.Items elt) {
|
||||
grilleEntites[pCourant.x][pCourant.y][1] = null;
|
||||
map.put((ElementDynamique) elt, new Point(-1, -1));
|
||||
}
|
||||
|
||||
/** Indique si p est contenu dans la grille
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user