mirror of
https://github.com/guezoloic/racing-game.git
synced 2026-03-28 18:03:50 +00:00
139 lines
3.0 KiB
Java
139 lines
3.0 KiB
Java
package model;
|
||
/**
|
||
* Représente une cellule du circuit.
|
||
* <p>
|
||
* Chaque cellule possède un type ({@link Cell}) et éventuellement une valeur
|
||
* numérique (par exemple pour indiquer une intensité, une vitesse, ou un identifiant de route).
|
||
* </p>
|
||
*/
|
||
public class Circuit
|
||
{
|
||
/**
|
||
* <code>Cell</code> est un enum
|
||
* représentant les différents types de
|
||
* cases qui composent le circuit de
|
||
* course.
|
||
*/
|
||
public static enum Cell
|
||
{
|
||
/**
|
||
* Case hors piste, non
|
||
* praticable par les
|
||
* voitures. */
|
||
EMPTY,
|
||
|
||
/**
|
||
* Case de route normale
|
||
* sur laquelle les voitures
|
||
* peuvent circuler.
|
||
*/
|
||
ROAD,
|
||
|
||
/**
|
||
* Case correspondant à la
|
||
* ligne de départ du circuit.
|
||
*/
|
||
START,
|
||
|
||
/**
|
||
* Case correspondant à la
|
||
* ligne d'arrivée du circuit.
|
||
*/
|
||
FINISH,
|
||
|
||
/**
|
||
* Case de route jaune, plus
|
||
* d'information sur le
|
||
* livrable 2
|
||
*/
|
||
YROAD;
|
||
}
|
||
|
||
/** Type de la cellule (vide, route, départ, arrivée, etc.) */
|
||
private final Cell type;
|
||
|
||
/** Valeur associée à la cellule (optionnelle, dépend du type) */
|
||
private int value;
|
||
|
||
/**
|
||
* Construit une cellule avec un type défini et une valeur par défaut
|
||
* égale à l’indice ordinal du type.
|
||
*
|
||
* @param type le type de la cellule
|
||
*/
|
||
public Circuit(Cell type)
|
||
{
|
||
this.type = type;
|
||
this.value = type.ordinal();
|
||
}
|
||
|
||
/**
|
||
* Construit une cellule avec un type et une valeur spécifique.
|
||
*
|
||
* @param type le type de la cellule
|
||
* @param value la valeur associée à la cellule
|
||
*/
|
||
public Circuit(Cell type, int value)
|
||
{
|
||
this.type = type;
|
||
this.value = value;
|
||
}
|
||
|
||
/**
|
||
* Modifie la valeur associée à la cellule.
|
||
*
|
||
* @param value la nouvelle valeur
|
||
* @return cette même instance (pour chaînage fluide)
|
||
*/
|
||
public Circuit setValue(int value)
|
||
{
|
||
this.value = value;
|
||
return this;
|
||
}
|
||
|
||
/**
|
||
* @return le type de la cellule
|
||
*/
|
||
public Cell getType()
|
||
{
|
||
return type;
|
||
}
|
||
|
||
/**
|
||
* @return la valeur associée à la cellule
|
||
*/
|
||
public int getValue()
|
||
{
|
||
return value;
|
||
}
|
||
|
||
/**
|
||
* Vérifie si la cellule est une route (ROAD ou YROAD).
|
||
*
|
||
* @return vrai si la cellule représente une route
|
||
*/
|
||
public boolean isRoad()
|
||
{
|
||
return type == Cell.ROAD || type == Cell.YROAD;
|
||
}
|
||
|
||
/**
|
||
* Vérifie si la cellule est un point de départ.
|
||
*
|
||
* @return vrai si la cellule représente le départ
|
||
*/
|
||
public boolean isStart()
|
||
{
|
||
return type == Cell.START;
|
||
}
|
||
|
||
/**
|
||
* Vérifie si la cellule est un point d’arrivée.
|
||
*
|
||
* @return vrai si la cellule représente la fin du circuit
|
||
*/
|
||
public boolean isFinish()
|
||
{
|
||
return type == Cell.FINISH;
|
||
}
|
||
} |