feat(Car.java): ajout commentaire et basic fn

This commit is contained in:
2025-10-29 23:19:56 +01:00
parent cd9894e92b
commit 6e0ddb5aa6
2 changed files with 79 additions and 0 deletions

76
src/Car.java Normal file
View File

@@ -0,0 +1,76 @@
/**
* <code>Car</code> 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.
* <p>Si la position atteint la fin de la boucle, un nouveau tour est compté.</p>
*
* @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;
}
}

View File

@@ -5,5 +5,8 @@ public class Main {
{'#', ' ', 'S'},
{'9', '#', 'F'},
});
System.out.println(m.getPathSize());
Car car = new Car(m.getPathSize());
}
}