package model.car; import java.awt.Color; import model.Game.Observer; /** * {@link Car} est l'interface représentant une voiture dans le jeu. * *
* Elle hérite de {@link Observer} afin de pouvoir être notifiée à chaque tick * du jeu et participer à la logique principale. *
* ** L'interface définit les actions possibles sur une voiture, ainsi que les * méthodes pour obtenir son état, sa position, son score, et sa couleur. *
*/ public interface Car extends Observer { /** * Accélère la voiture. ** Modifie l'état de la voiture selon les règles du {@link State}. *
* @return message explicatif. */ public String accelerate(); /** * Ralentit la voiture. ** Modifie l'état de la voiture selon les règles du {@link State}. *
* @return message explicatif. */ public String decelerate(); /** * Active ou désactive le mouvement inversé de la voiture. * * @param active true pour inverser la direction, false pour avancer normalement */ public void reverse(boolean active); /** * Active ou désactive la consommation de carburant. * * @param active true pour consommer du carburant, false pour ne pas consommer */ public void consumption(boolean active); /** * Supprime ou désactive la voiture (selon l'implémentation). * * @return l'instance de la voiture (pour chaînage ou gestion interne) */ public Car remove(); /** * @return le nom de la voiture */ public String getName(); /** * @return la position actuelle sur le circuit */ public int getPosition(); /** * @return le score actuel de la voiture */ public int getScore(); /** * @return le nombre de tours complétés */ public int getRound(); /** * @return le carburant restant */ public int getFuel(); /** * @return l'état courant de la voiture ({@link State}) */ public State getState(); /** * @return la couleur de la voiture pour l'affichage */ public Color getColor(); }