diff --git a/pom.xml b/pom.xml index db921089e42adfbbf56fdc11281eebf717557a87..bc3b721645598f808a02689e50f3266e09f8abc2 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 0000000000000000000000000000000000000000..1b1e6059acb0bdb2379e4867cc33f2979e736208 --- /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 0000000000000000000000000000000000000000..c7b41fa817289e6d8a021447ce21c129cdfc6351 --- /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 0000000000000000000000000000000000000000..23e922b9a38d1b92c636303fbefdc084a8e36bd1 --- /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 0000000000000000000000000000000000000000..d558f4fcac8a833ab27314545bc04ecd072c3f03 --- /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 0000000000000000000000000000000000000000..ef11f8ee371b779625bc65e9eb07009e5d6d1f58 --- /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"); + } +}