From 8c5f7c987ce8f9e14dcf7b19220a4cf643f34163 Mon Sep 17 00:00:00 2001 From: Amaury Joly Date: Fri, 4 Dec 2020 15:43:09 +0100 Subject: [PATCH] Ajout methodes dans jeu : regarder derriere soit + retirer item --- src/modele/calculs/Jeu.java | 41 ++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/modele/calculs/Jeu.java b/src/modele/calculs/Jeu.java index bfe9d3f..4f0a690 100644 --- a/src/modele/calculs/Jeu.java +++ b/src/modele/calculs/Jeu.java @@ -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 */