import java.util.*; class Devin2 { static final Scanner input = new Scanner(System.in); static final Random random = new Random(); public static void main(String[] args) { // Ces constantes définissent l'intervalle dans lequel sont // choisis les nombres final int MIN = 1; final int MAX = 100; int min, max; // la plage de valeurs à tester int essai; // le nombre donné par l'utilisateur int choix; // pour choisir de continuer ou non int ncoups, mincoups; // le nombre de coups, et le meilleur score char reponse; // la réponse de l'utilisateur // on met `mincoups' à -1 ce qui nous permet de savoir si une // partie a déjà été jouée ou non mincoups = -1; // on fait une partie, et tant que l'utilisateur désire continuer, // on recommence. do { // le joueur doit choisir un nombre `x' entre MIN et MAX inclus System.out.println("Choisissez un nombre entre " + MIN + " et " + MAX + ". Taper \"go\" pour commencer."); input.next(); // la plage de valeurs à tester min = MIN; max = MAX; // au départ, on a joué 0 coups ncoups = 0; // Le jeu: on propose un nombre à l'utilisateur (`essai'), et // tant qu'il n'est celui choisi par le joueur, on recommence. do { // on propose un nombre : au milien entre `min' et `max' essai = (min + max) / 2; System.out.print("[ min = " + min + " ; max = " + max + "]"); if (min == max) System.out.println(", je pense que j'ai gagné !"); else System.out.println(); System.out.println("Je propose : " + essai); System.out.print("Votre réponse ? "); reponse = input.next().charAt(0); switch (reponse) { case '<': max = essai - 1; break; case '>': min = essai + 1; break; case '=': /* nop */ break; default: System.out.println("Je ne comprends pas la réponse : " + reponse); // enlève 1 à `ncoups', pour ne pas compter ce coup --ncoups; break; } // on incrémente le nombre de coups ++ncoups; // s'il n'a pas deviné, on recommence } while (reponse != '='); // quand on arrive ici, le joueur a gagné. On affiche le // nombre de coups System.out.println("Gagné en " + ncoups + " coups."); // si c'était la première partie (mincoups == -1) ou bien s'il // a fait un meilleur score (ncoups < mincoups), on met // mincoups à jour if (mincoups == -1 || ncoups < mincoups) mincoups = ncoups; // on demande à l'utilisateur s'il veut continuer System.out.println("\n" + "1. continuer\n" + "2. quitter"); choix = input.nextInt(); // s'il veut continuer, on recommence une nouvelle partie } while (choix == 1); // L'utilisateur a décidé de quitter, on affiche le meilleur score System.out.println("\nLe meilleur score est de " + mincoups + " coups."); } }