diff --git a/src/Partie.java b/src/Partie.java index 619f719..c96cdf5 100644 --- a/src/Partie.java +++ b/src/Partie.java @@ -2,22 +2,127 @@ /** * La classe Partie * -* @version -* @author -* Date : +* @version 0.1 +* @author Aurélien +* Date : 08-10-25 * Licence : */ public class Partie { + //Contantes + private static final byte REMAININGTRY = 11 ; + private static final byte CARACTERCODESHIFT = 65 ; //Décalage ASCI > 'A' + //Attributs + private char[] secretword ; + private byte wordsize ; + private boolean[] foundletters ; + private boolean[] entriesletters = new boolean[26] ; //Pseudo Alphabée + private byte remainingtry = REMAININGTRY ; //Constructeur public Partie() { - + this.secretword = generateSecretWord() ; + this.wordsize = (byte) secretword.length ; + this.foundletters = new boolean[wordsize] ; } //Méthodes + public char[] getSecretWord() { + return this.secretword ; + } + + public boolean[] getFoundLetters() { + return this.foundletters ; + } + + public byte getRemainingTry() { + return this.remainingtry ; + } + + + /** + * Vérifie l'état de la partie en cours. + * + * @return true si le jeu est fini. + */ + public boolean gameIsEnding() { + if(this.remainingtry <= 0){ + return true ; + }else if(wordIsFound()){ + return true ; + }else{ + return false ; + } + } + + /** + * Vérifie si la lettre reçu n'a pas déjà été joué puis, met à jour le tableau "entriesletters" et + * "foundletters" le cas échéant. + * + * @return true si la lettre était déjà présente. + */ + public boolean isAlreadyEntries(char letter) { + short caractercode = (short) letter ; //Récupération du code du caractère + if(this.entriesletters[caractercode-CARACTERCODESHIFT]){ + this.remainingtry-- ; //Décrément des essais + return true ; + }else{ + boolean isfind = false ; + for(byte i = 0 ; i < this.wordsize ; i++){ //Parcours du "secretword" + if(this.secretword[i] == letter){ + this.foundletters[i] = true ; + isfind = true ; + } + } + if(isfind == false){ + this.remainingtry-- ; //Décrément des essais + } + this.entriesletters[caractercode-CARACTERCODESHIFT] = true ; //Ajout au tableau des lettres jouées + return false ; + } + } + + + private char[] generateSecretWord() { + char[] word = {'D','A','M','I','E','N'}; + //À implémenter plus tard + return word ; + } + + private boolean wordIsFound() { + for(byte i = 0 ; i < this.wordsize ; i++){ //Parcours du "secretword" + if(!this.foundletters[i]){ //Si une lettre n'est pas trouvé + return false ; + } + } + return true ; + } + //Affichage public String toString() { return "" ; } + + //Tests + public static void main(String[] args){ + char[] test = {'E','O','M','I','E','D','A','Z','N'}; + byte size = (byte) test.length ; + boolean status ; + + Partie game = new Partie(); + System.out.println("Trick > " + String.valueOf(game.secretword) + "\n"); + for(byte i = 0 ; i < size && !game.gameIsEnding() ; i++){ + System.out.println("Essais restants : " + game.getRemainingTry()); + status = game.isAlreadyEntries(test[i]); + for(byte l = 0 ; l < game.wordsize ; l++){ //Parcours du "secretword" + if(game.foundletters[l] == true){ + System.out.print(game.getSecretWord()[l] + " "); + }else{ + System.out.print("_ "); + } + } + System.out.println(""); //Lisibilité + //System.out.println("Lettres : " + game.entriesletters); + } + } }