forked from menault/TD3_DEV51_Qualite_Algo
113
src/Partie.java
113
src/Partie.java
@@ -2,22 +2,127 @@
|
||||
/**
|
||||
* La classe <code>Partie</code>
|
||||
*
|
||||
* @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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user