package personnages; import java.util.ArrayList; import object.*; /** * Cette classe est la primitive des classes * {@link Player} et {@link Robot}. Elle contient * tout le necessaire pour tout les personnages * jouable du jeu. */ public class Personnage { /** * cette variable contient la valeur dans laquelle on sait * quand le corps du snake grandi. il est le même pour tout * les personnages du jeu et c'est pour ça que c'est un * static. on peut le changer directement dans le main en * faisant la commande par exemple :
* Personnage.n = 2 sans appeler
* player ou robot, les deux valeurs vont "automatiquement"
* changer.
*/
public static int n;
/**
* cette variable est le nombre de round fait par le snake,
* il s'incremente tout les tours quand le snake avance.
*/
private int round;
/**
* cette variable est le nom du snake présent dans le tournois,
* il peut etre un mot aléatoire ou quelque chose de personnalisé
*/
protected String name;
/**
* cette variable accumule toute les coordonnées du serpent, elle
* contient le corps et la tête et la première coordonnées est la tête.
* Le programme peut ajouter des coordonnées en fonction de round et n,
* exemple :
*
* si n > 0 et round > 0 ->
* retourner round%n == 0
* sinon
* retourner faux
*
*/
private ArrayList
* si effect == IMPASSABLE ->
* retourner true
*sinon
* retourner false
*
*/
public boolean applyEffects(Effects effect) {
switch (effect) {
case DECREASESIZE:
if (this.coordinate.size() > 1) {this.coordinate.removeLast();} break;
case VOID: break;
case IMPASSABLE: return true;
}
return false;
}
/**
* cette fonction renvoie la tête du snake mais en clone
* donc elle fait une copie de la position existante pour
* eviter de prendre l'adresse mémoire de la liste et pouvoir
* utiliser celle là comme on veut sans affecter la liste.
*/
public int[] getHeadCoordinate() {
return this.coordinate.getFirst().clone();
}
/**
* cette fonction renvoie la queue du snake mais en clone
* donc elle fait une copie de la position existante pour
* eviter de prendre l'adresse mémoire de la liste et pouvoir
* utiliser celle là comme on veut sans affecter la liste.
*/
public int[] getLatestCoordinate() {
return this.coordinate.getLast().clone();
}
/**
* cette fonction renvoie un clone de la liste de coordonnée
* donc elle fait une copie des positions existante pour
* eviter de prendre l'adresse mémoire de l'ArrayList et pouvoir
* utiliser celle là comme on veut sans affecter l'ArrayList.
*/
public ArrayList