93 lines
3.1 KiB
Java
93 lines
3.1 KiB
Java
package com.humanbooster.exercices;
|
|
|
|
import java.util.Scanner;
|
|
|
|
/**
|
|
* Classe JeuDevinette
|
|
* Ce jeu consiste à deviner un nombre aléatoire entre 1 et 100.
|
|
* L'utilisateur a 10 tentatives pour deviner le nombre.
|
|
* Après chaque tentative, le programme indique si le nombre à deviner est plus grand ou plus petit.
|
|
*/
|
|
public class JeuDevinette {
|
|
|
|
private final int nombreADeviner;
|
|
private int nombreDeTentatives;
|
|
private final int[] tentatives;
|
|
private final int MAX_TENTATIVES = 10;
|
|
|
|
private final int MIN = 1;
|
|
private final int MAX = 100;
|
|
|
|
/**
|
|
* Constructeur de la classe JeuDevinette
|
|
* Initialise le nombre à deviner, le nombre de tentatives et le tableau de tentatives
|
|
*/
|
|
public JeuDevinette() {
|
|
this.nombreADeviner = getRandomBetween(MIN, MAX);
|
|
this.nombreDeTentatives = 0;
|
|
this.tentatives = new int[MAX_TENTATIVES];
|
|
}
|
|
|
|
/**
|
|
* Méthode principale pour lancer le jeu
|
|
* @param args arguments de la ligne de commande
|
|
*/
|
|
public static void main(String[] args) {
|
|
JeuDevinette jeu = new JeuDevinette();
|
|
jeu.lancerJeu();
|
|
}
|
|
|
|
/**
|
|
* Méthode pour lancer le jeu
|
|
* Demande à l'utilisateur de deviner le nombre et lui donne des indices
|
|
*/
|
|
public void lancerJeu() {
|
|
Scanner scanner = new Scanner(System.in);
|
|
System.out.println("Bienvenue dans le jeu de devinettes !");
|
|
System.out.println("Devinez le nombre entre " + MIN + " et " + MAX +". Vous avez " + MAX_TENTATIVES + " tentatives.");
|
|
|
|
while (nombreDeTentatives < MAX_TENTATIVES) {
|
|
System.out.print("Tentative " + (nombreDeTentatives + 1) + " : ");
|
|
int proposition = scanner.nextInt();
|
|
tentatives[nombreDeTentatives] = proposition;
|
|
nombreDeTentatives++;
|
|
|
|
if (proposition == nombreADeviner) {
|
|
System.out.println("Bravo ! Vous avez deviné le nombre en " + nombreDeTentatives + " tentatives.");
|
|
break;
|
|
} else if (proposition < nombreADeviner) {
|
|
System.out.println("C'est plus grand !");
|
|
} else {
|
|
System.out.println("C'est plus petit");
|
|
}
|
|
|
|
if (nombreDeTentatives == MAX_TENTATIVES) {
|
|
System.out.println("Désolé, vous avez atteint le nombre maximum de tentatives.");
|
|
System.out.println("Le nombre était : " + nombreADeviner);
|
|
}
|
|
}
|
|
|
|
afficherHistorique();
|
|
}
|
|
|
|
/**
|
|
* Méthode pour générer un nombre aléatoire entre min et max
|
|
* @param min valeur minimale
|
|
* @param max valeur maximale
|
|
* @return un nombre aléatoire entre min et max
|
|
*/
|
|
private int getRandomBetween(int min, int max) {
|
|
return (int)(Math.random() * (max - min + 1)) + min;
|
|
}
|
|
|
|
/**
|
|
* Méthode pour afficher l'historique des tentatives
|
|
*/
|
|
private void afficherHistorique() {
|
|
System.out.println("\nHistorique des tentatives :");
|
|
for (int i = 0; i < nombreDeTentatives; i++) {
|
|
System.out.println("Tentative " + (i + 1) + " : " + tentatives[i]);
|
|
}
|
|
}
|
|
}
|