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