changement de tout le programme avec ajout de plein de nouvelle chose et coorection de chose pour le rendre plus pratique

This commit is contained in:
2024-05-23 15:21:47 +02:00
parent 0f645c891f
commit 7f17674f5a
18 changed files with 344 additions and 679 deletions

23
src/types/Effect.java Normal file
View File

@@ -0,0 +1,23 @@
package types;
/**
* cette enumérateur {@link Effects} contient tout les effets
* necessaire pour le bon déroulement du jeu et quelque effets
* amusant qui pousse un peu plus les mecaniques du jeu.
*/
public enum Effect {
/**
* Effet : Réduit la taille du serpent de 1 segment.
*/
DECREASESIZE,
/**
* Effet : Intransposable, entraînant la mort du joueur lors du contact.
*/
IMPASSABLE,
/**
* Effet : Vide, aucun effet.
*/
VOID;
}

67
src/types/Item.java Normal file
View File

@@ -0,0 +1,67 @@
package types;
import environnements.Grid;
/**
* cette enum représente différents types d'objets dans le jeu.
*/
public enum Item implements Grid {
/**
* Mur impassable.
* Effet associé : <pre>{@code types.Effect.IMPASSABLE}</pre>
* utf : null car c'est un autre programme qui gère le mur.
*/
WALL(Effect.IMPASSABLE, null),
/**
* Zone vide sans effet.
* Effet associé : <pre>{@code types.Effect.VOID}</pre>
* utf : vide
*/
VOID(Effect.VOID, " "),
/**
* Fraise.
* Effet associé : <pre>{@code types.Effect.DECREASESIZE}</pre>
* utf : un drapeau (0x26FF)
*/
FRAISE(Effect.DECREASESIZE, " \u26FF ");
private final Effect EFFECT;
private String utfCode;
/**
* @param effect L'effet associé à l'objet.
*/
Item(Effect effect, String utf) {
this.EFFECT = effect;
this.utfCode = utf;
}
/**
* cette methode donne l'effet associé à l'objet.
*
* @return L'effet associé à l'objet.
*/
@Override
public Effect get() {
return this.EFFECT;
}
@Override
public Item[] getValues() {
return values();
}
@Override
public String getStringCode() {
return this.utfCode;
}
@Override
public void updateStringCode(String textCode) {
this.utfCode = textCode;
}
}

63
src/types/Mouvement.java Normal file
View File

@@ -0,0 +1,63 @@
package types;
/**
* Cet enumerateur prend en charge tout les mouvements possible
* pour le serpent, il a uniquement la possibilité de se déplacer
* grâce a {@link Mouvement} pour la classe Player et Robot.
*/
public enum Mouvement {
/**
* HAUT prend comme coordonnée (0, -1) pour se déplacer.
* @param x = 0
* @param y = -1
*/
HAUT(0, -1),
/**
* BAS prend comme coordonnée (0, 1) pour se déplacer.
* @param x = 0
* @param y = 1
*/
BAS(0, 1),
/**
* GAUCHE prend comme coordonnée (1, 0) pour se déplacer.
* @param x = -1
* @param y = 0
*/
GAUCHE(-1, 0),
/**
* @DROITE prend comme coordonnée (-1, 0) pour se déplacer.
* @param x = 1
* @param y = 0
*/
DROITE(1, 0);
private final int deltaX;
private final int deltaY;
Mouvement(int deltaX, int deltaY) {
this.deltaX = deltaX;
this.deltaY = deltaY;
}
/**
* Cette fonction prend les coordonnées mis en paramètre et
* modifie avec les coordonnées de l'enum.
* @param coordinate prend principalement les coordonnées du
* personnage
*/
public void updateCoordinate(int[] coordinate) {
coordinate[0] += this.deltaX;
coordinate[1] += this.deltaY;
}
/**
* Cette fonction retourne les coordonnées des valeurs du mouvement.
* @return la liste qui contient [0] = x et [1] = y
*/
public int[] getCoordinate() {
return new int[] {this.deltaX, this.deltaY};
}
}

36
src/types/SnakePart.java Normal file
View File

@@ -0,0 +1,36 @@
package types;
import environnements.Grid;
public enum SnakePart implements Grid {
HEAD(Effect.IMPASSABLE, " \u25CF "),
BODY(Effect.IMPASSABLE, " \u25A1 ");
private final Effect EFFECT;
private String utfCode;
SnakePart(Effect effect, String utf) {
this.EFFECT = effect;
this.utfCode = utf;
}
@Override
public Effect get() {
return this.EFFECT;
}
@Override
public SnakePart[] getValues() {
return values();
}
@Override
public String getStringCode() {
return this.utfCode;
}
@Override
public void updateStringCode(String textCode) {
this.utfCode = textCode;
}
}