forked from menault/TD3_DEV51_Qualite_Algo
		
	Gestion de partie (sans génération)
This commit is contained in:
		
							
								
								
									
										51
									
								
								src/Console.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								src/Console.java
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,51 @@ | ||||
| import java.io.*; | ||||
| /* | ||||
| Auteur : Aurélien Date : 25-03-24 Version : 1.0 Liscence : Usage Personnel | ||||
|  | ||||
| Pour se servir de cette classe, il faut créer au préalable un objet unique qui nous | ||||
| servira d'intermédiaire avec la console. | ||||
| Ex : Console connect = new Console() ; | ||||
| */ | ||||
| public class Console { | ||||
|   // attribut | ||||
|   private BufferedReader entree ;  //nécessaire à la lecture en une ligne | ||||
|   private BufferedWriter sortie ;  //nécessaire à l'écriture en une ligne | ||||
|   // constructeur | ||||
|   public Console() { | ||||
| //    InputStreamReader fluxe = new InputStreamReader(System.in) ; | ||||
|     this.entree = new BufferedReader(new InputStreamReader(System.in)) ; | ||||
| //    OutputStreamWriter fluxs = new OutputStreamWriter(System.out) ; | ||||
|     this.sortie = new BufferedWriter(new OutputStreamWriter(System.out)) ; | ||||
|   } | ||||
|   // méthodes | ||||
|   public void ConsoleOut(String text) { | ||||
|     try{ | ||||
|       this.sortie.write(text) ; | ||||
|       this.sortie.flush() ;  //affiche le texte à la console | ||||
|     }catch(IOException er){ | ||||
|       System.err.println("Console down, please relaunch program") ; | ||||
|     } | ||||
|   } | ||||
|   public void ConsoleOutln(String text) { | ||||
|     try{ | ||||
|       this.sortie.write(text) ; | ||||
|       this.sortie.newLine() ; | ||||
|       this.sortie.flush() ;  //affiche le texte à la console | ||||
|     }catch(IOException er){ | ||||
|       System.err.println("Console down, please relaunch program") ; | ||||
|     } | ||||
|   } | ||||
|   public String ConsoleIn() { | ||||
|     String ligne = "" ;  //initialisation avant le try | ||||
|     try{ | ||||
|       ligne = this.entree.readLine() ;  //bloquant tant qu'il n'y à rien à lire | ||||
|     }catch(IOException er){ | ||||
|       System.err.println("Console down, please relaunch program") ; | ||||
|     } | ||||
|     return ligne ;  //à placer en dehors du try | ||||
|   } | ||||
|   // affichage  | ||||
|   public String toString() { | ||||
|     return "" ; | ||||
|   } | ||||
| } | ||||
							
								
								
									
										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 trouvé = false ; | ||||
|          for(byte i = 0 ; i < this.wordsize ; i++){  //Parcours du "secretword" | ||||
|             if(this.secretword[i] == letter){ | ||||
|                this.foundletters[i] = true ; | ||||
|                trouvé = true ; | ||||
|             } | ||||
|          } | ||||
|          if(trouvé == 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 taille = (byte) test.length ; | ||||
|       boolean etat ; | ||||
|  | ||||
|       Partie jeu = new Partie(); | ||||
|       System.out.println("Trick > " + String.valueOf(jeu.secretword) + "\n"); | ||||
|       for(byte i = 0 ; i < taille && !jeu.gameIsEnding() ; i++){ | ||||
|          System.out.println("Essais restants : " + jeu.getRemainingTry()); | ||||
|          etat = jeu.isAlreadyEntries(test[i]); | ||||
|          for(byte l = 0 ; l < jeu.wordsize ; l++){  //Parcours du "secretword" | ||||
|             if(jeu.foundletters[l] == true){ | ||||
|                System.out.print(jeu.getSecretWord()[l] + " "); | ||||
|             }else{ | ||||
|                System.out.print("_ "); | ||||
|             } | ||||
|          } | ||||
|          System.out.println("");  //Lisibilité | ||||
|          //System.out.println("Lettres : " + jeu.entriesletters); | ||||
|       } | ||||
|    } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user