From 89df6f96477a03e8c2b811db0ae983f16305075b Mon Sep 17 00:00:00 2001 From: MehmetAtes Date: Wed, 17 Sep 2025 15:47:47 +0200 Subject: [PATCH] Ajout du module RoadBook --- pom.xml | 1 + roadBook/pom.xml | 78 +++++++++++++++++++ .../m1info/gl/tparineymates/Instruction.java | 9 +++ .../m1info/gl/tparineymates/RoadBook.java | 26 +++++++ .../gl/tparineymates/RoadBookCalculator.java | 23 ++++++ .../UndefinedRoadbookException.java | 14 ++++ 6 files changed, 151 insertions(+) create mode 100644 roadBook/pom.xml create mode 100644 roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/Instruction.java create mode 100644 roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBook.java create mode 100644 roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBookCalculator.java create mode 100644 roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/UndefinedRoadbookException.java diff --git a/pom.xml b/pom.xml index db92108..bc3b721 100644 --- a/pom.xml +++ b/pom.xml @@ -18,5 +18,6 @@ robot battery maptools + roadBook diff --git a/roadBook/pom.xml b/roadBook/pom.xml new file mode 100644 index 0000000..1b1e605 --- /dev/null +++ b/roadBook/pom.xml @@ -0,0 +1,78 @@ + + + 4.0.0 + + robot-modules + fr.ufrst.m1info.gl.tparineymates + 1.0-SNAPSHOT + + + fr.ufrst.m1info.gl.tparineymates + roadBook + 1.0-SNAPSHOT + + roadBook + + http://www.example.com + + + UTF-8 + 1.7 + 1.7 + + + + + junit + junit + 4.11 + test + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/Instruction.java b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/Instruction.java new file mode 100644 index 0000000..c7b41fa --- /dev/null +++ b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/Instruction.java @@ -0,0 +1,9 @@ +package fr.ufrst.m1info.gl.tparineymates; + + +public enum Instruction { + TURNLEFT, + BACKWARD, + TURNRIGHT, + FORWARD +} diff --git a/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBook.java b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBook.java new file mode 100644 index 0000000..23e922b --- /dev/null +++ b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBook.java @@ -0,0 +1,26 @@ +package fr.ufrst.m1info.gl.tparineymates; + + + +import java.util.Iterator; +import java.util.List; + +public class RoadBook { + private List instructions; + private final Iterator instructionIterator; + + + public RoadBook(List instructions) { + this.instructions = instructions; + instructionIterator = instructions.iterator(); + } + + + public boolean hasInstruction() { + return instructionIterator.hasNext(); + } + + public Instruction next() { + return instructionIterator.next(); + } +} diff --git a/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBookCalculator.java b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBookCalculator.java new file mode 100644 index 0000000..d558f4f --- /dev/null +++ b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/RoadBookCalculator.java @@ -0,0 +1,23 @@ +package fr.ufrst.m1info.gl.tparineymates; + +import java.util.ArrayList; +import java.util.List; + +public class RoadBookCalculator { + + public static RoadBook calculateRoadBook(Direction direction, Coordinates position, Coordinates destination, ArrayList instructions) { + List directionList = new ArrayList(); + if (destination.getX() < position.getX()) directionList.add(Direction.WEST); + if (destination.getX() > position.getX()) directionList.add(Direction.EAST); + if (destination.getY() < position.getY()) directionList.add(Direction.SOUTH); + if (destination.getY() > position.getY()) directionList.add(Direction.NORTH); + if (directionList.isEmpty()) return new RoadBook(instructions); + if (directionList.contains(direction)) { + instructions.add(Instruction.FORWARD); + return calculateRoadBook(direction, MapTools.nextForwardPosition(position, direction), destination, instructions); + } else { + instructions.add(Instruction.TURNRIGHT); + return calculateRoadBook(MapTools.clockwise(direction), position, destination, instructions); + } + } +} \ No newline at end of file diff --git a/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/UndefinedRoadbookException.java b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/UndefinedRoadbookException.java new file mode 100644 index 0000000..ef11f8e --- /dev/null +++ b/roadBook/src/main/java/fr/ufrst/m1info/gl/tparineymates/UndefinedRoadbookException.java @@ -0,0 +1,14 @@ +package fr.ufrst.m1info.gl.tparineymates; + + + +public class UndefinedRoadbookException extends Exception { + /** + * + */ + private static final long serialVersionUID = 5576550274153253615L; + + public UndefinedRoadbookException() { + super("Aucun road book défini"); + } +} -- GitLab