diff --git a/src/Car.java b/src/Car.java
new file mode 100644
index 0000000..7093a91
--- /dev/null
+++ b/src/Car.java
@@ -0,0 +1,76 @@
+/**
+ * Car représente une voiture qui avance sur un circuit en boucles.
+ * Chaque appel à {@link #makeMove()} avance la voiture d'une position.
+ * Quand la position atteint la fin de la boucle, un nouveau tour est compté.
+ */
+public class Car {
+
+ /** Position actuelle dans la boucle (entre 0 et loop inclus) */
+ private int pos = 0;
+
+ /** Nombre de tours complétés */
+ private int round = 0;
+
+ /** Nombre total de cases dans une boucle (doit être > 0) */
+ private final int loop;
+
+ /**
+ * Construit une nouvelle voiture.
+ *
+ * @param loop nombre de positions par boucle (doit être > 0)
+ * @throws IllegalArgumentException si {@code loop <= 0}
+ */
+ public Car(int loop)
+ {
+ if (loop <= 0)
+ throw new IllegalArgumentException("loop must be > 0!");
+ this.loop = loop;
+ }
+
+ /**
+ * Fait avancer la voiture d'une position.
+ *
Si la position atteint la fin de la boucle, un nouveau tour est compté.
+ * + * @return cette même instance (pour chaînage fluide) + */ + public Car makeMove() + { + pos++; + if (pos == loop) + round++; + pos %= (loop + 1); // Repart de 0 après avoir dépassé loop + return this; + } + + /** + * @return la position actuelle dans la boucle + */ + public int getPosition() + { + return pos; + } + + /** + * @return le score, calculé comme (nombre de tours + progression du tour) × 100 + */ + public int getScore() + { + return (int) ((round + (float) pos / loop) * 100); + } + + /** + * @return le nombre de tours complétés + */ + public int getRound() + { + return round; + } + + /** + * @return la taille de la boucle (nombre de positions) + */ + public int getLoop() + { + return loop; + } +} \ No newline at end of file diff --git a/src/Main.java b/src/Main.java index 3ae8b53..f7a71af 100644 --- a/src/Main.java +++ b/src/Main.java @@ -5,5 +5,8 @@ public class Main { {'#', ' ', 'S'}, {'9', '#', 'F'}, }); + + System.out.println(m.getPathSize()); + Car car = new Car(m.getPathSize()); } } \ No newline at end of file