From 43de62ac4515c1c17bf77aaee5c4c04c971aa6bf Mon Sep 17 00:00:00 2001 From: PF Date: Tue, 23 May 2017 14:33:04 +0200 Subject: [PATCH] =?UTF-8?q?Gestion=20sym=C3=A9trie?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pc/src/obstacles/types/ObstaclesFixes.java | 11 ++++++----- pc/src/pathfinding/astar/AStarCourbe.java | 18 +++++++++++++----- pc/src/pathfinding/astar/arcs/ArcManager.java | 6 +++++- pc/src/tests/lowlevel/JUnit_AStarCourbe.java | 1 + 4 files changed, 25 insertions(+), 11 deletions(-) diff --git a/pc/src/obstacles/types/ObstaclesFixes.java b/pc/src/obstacles/types/ObstaclesFixes.java index 87ea6dbf..8355b6c0 100644 --- a/pc/src/obstacles/types/ObstaclesFixes.java +++ b/pc/src/obstacles/types/ObstaclesFixes.java @@ -28,12 +28,13 @@ public enum ObstaclesFixes { - // TODO visibilité à mettre à jour selon le robot / les capteurs - ZONE_DEPART_ENNEMI(new ObstacleRectangular(new Vec2RO(1070 / 2 - 1500, 2000 - 360 / 2), 1070, 360, Couleur.OBSTACLES), false, false), + BASCULE_GAUCHE(new ObstacleRectangular(new Vec2RO(-(1140 - 350 / 2), 2000 - 360 / 2), 350, 360, Couleur.OBSTACLES), true, false), + ZONE_DEPART_GAUCHE_GAUCHE(new ObstacleRectangular(new Vec2RO(-(1500 - 360 / 2), 2000 - 360 / 2), 360, 360, Couleur.OBSTACLES), true, false), + ZONE_DEPART_GAUCHE_CENTRE(new ObstacleRectangular(new Vec2RO(-(790 - 360 / 2), 2000 - 360 / 2), 360, 360, Couleur.OBSTACLES), true, false), - // CECI EST UN HACK. Vu qu'on n'est pas censé voir d'ennemis sur notre zone de départ, mettre ces obstacles en visibles permettent d'ignorer ce qu'on y voit - BASCULE(new ObstacleRectangular(new Vec2RO(1140 - 350 / 2, 2000 - 360 / 2), 350, 360, Couleur.OBSTACLES), true, true), - ZONE_DEPART_A_NOUS(new ObstacleRectangular(new Vec2RO(1500 - 360 / 2, 2000 - 360 / 2), 360, 360, Couleur.OBSTACLES), true, true), + BASCULE_DROITE(new ObstacleRectangular(new Vec2RO(1140 - 350 / 2, 2000 - 360 / 2), 350, 360, Couleur.OBSTACLES), true, false), + ZONE_DEPART_DROITE_DROITE(new ObstacleRectangular(new Vec2RO(1500 - 360 / 2, 2000 - 360 / 2), 360, 360, Couleur.OBSTACLES), true, false), + ZONE_DEPART_DROITE_CENTRE(new ObstacleRectangular(new Vec2RO(790 - 360 / 2, 2000 - 360 / 2), 360, 360, Couleur.OBSTACLES), true, false), TASSEAU_DROITE(new ObstacleRectangular(new Vec2RO(1500 - 710 / 2, 2000 - 360 - 11), 710, 22, Couleur.OBSTACLES), true, false), TASSEAU_GAUCHE(new ObstacleRectangular(new Vec2RO(-1500 + 710 / 2, 2000 - 360 - 11), 710, 22, Couleur.OBSTACLES), true, false), diff --git a/pc/src/pathfinding/astar/AStarCourbe.java b/pc/src/pathfinding/astar/AStarCourbe.java index a5597026..474f779c 100644 --- a/pc/src/pathfinding/astar/AStarCourbe.java +++ b/pc/src/pathfinding/astar/AStarCourbe.java @@ -36,6 +36,7 @@ import pathfinding.dstarlite.gridspace.PointGridSpace; import config.Config; import config.ConfigInfo; +import config.DynamicConfigurable; import container.Service; import container.dependances.HighPFClass; import exceptions.MemoryManagerException; @@ -56,9 +57,10 @@ * */ -public class AStarCourbe implements Service, HighPFClass +public class AStarCourbe implements Service, HighPFClass, DynamicConfigurable { protected Log log; + private boolean symetrie; private ArcManager arcmanager; private DStarLite dstarlite; private RealGameState state; @@ -207,7 +209,7 @@ public final synchronized void process(CheminPathfindingInterface chemin, boolea CinematiqueObs obsDepart = cinemMemory.getNewNode(); Cinematique cinemDepart = depart.state.robot.getCinematique(); obsDepart.updateReel(cinemDepart.getPosition().getX(), cinemDepart.getPosition().getY(), cinemDepart.orientationReelle, cinemDepart.enMarcheAvant, cinemDepart.courbureReelle); - arcmanager.disableObstaclesFixes(obsDepart); + arcmanager.disableObstaclesFixes(symetrie, obsDepart); } trajetDeSecours = null; @@ -471,7 +473,7 @@ public void initializeNewSearch(Cinematique arrivee, SensFinal sens, boolean sho CinematiqueObs obsDepart = cinemMemory.getNewNode(); Cinematique cinemDepart = depart.state.robot.getCinematique(); obsDepart.updateReel(cinemDepart.getPosition().getX(), cinemDepart.getPosition().getY(), cinemDepart.orientationReelle, cinemDepart.enMarcheAvant, cinemDepart.courbureReelle); - arcmanager.disableObstaclesFixes(obsDepart); + arcmanager.disableObstaclesFixes(symetrie, obsDepart); } dstarlite.computeNewPath(depart.state.robot.getCinematique().getPosition(), arrivee.getPosition(), shoot); @@ -503,7 +505,7 @@ public void initializeNewSearchToCircle(boolean shoot, GameState