/* Solution l'exercice -3- Deviner un nombre. Authors: Deitel&Deitel Modifications: au niveau du getContenPane de GestionnaireEssai pour forcer la mise à jour des couleurs. */ //import javax.swing.*; import java.awt.*; import java.awt.event.*; public class DevineNombreAWT extends Frame { private int nombre, tentative; private int plusGrand, plusPetit; private TextField entreeTentative; private TextField message; private Label texte1, texte2, texte3; private Button nouveauJeu; public DevineNombreAWT(){ super( "Cherche nombre" ); texte1 = new Label( "J'ai un nombre compris entre 1 et 1000." ); texte2 = new Label( "Pouvez-vous le deviner? "); texte3 = new Label( "Votre premier essai:" ); plusGrand = 0; plusPetit = 1000; entreeTentative = new TextField( 5 ); entreeTentative.addActionListener( new GestionnaireEssai( ) ); message = new TextField( "<------------------", 15 ); message.setEditable( false ); nouveauJeu = new Button( "Nouvelle partie" ); nouveauJeu.addActionListener( new ActionListener() { public void actionPerformed( ActionEvent e ) { message.setText( "<------------------" ); entreeTentative.setText( "" ); entreeTentative.setEditable( true ); leJeu(); } } ); setLayout( new FlowLayout() ); add( texte1 ); add( texte2 ); add( texte3 ); add( entreeTentative ); add( message ); add( nouveauJeu ); setSize( 300, 200 ); show(); leJeu(); } public void leJeu() { nombre = ( int ) ( Math.random() * 1000 + 1 ); } public static void main( String args[] ) { DevineNombreAWT app = new DevineNombreAWT(); app.addWindowListener( new WindowAdapter() { public void windowClosing( WindowEvent e ) { System.exit( 0 ); } } ); } class GestionnaireEssai implements ActionListener { public void actionPerformed( ActionEvent e ) { tentative = Integer.parseInt( entreeTentative.getText() ); if ( tentative > nombre ) { message.setText( "Trop haut" ); if ( tentative < plusPetit ) { plusPetit = tentative; setBackground( Color.red ); // Plus chaud. } else setBackground( Color.blue ); // Plus froid. } else if ( tentative < nombre ) { message.setText( "Trop bas" ); if ( tentative > plusGrand ) { plusGrand = tentative; setBackground( Color.red ); // Plus chaud. } else setBackground( Color.blue ); // Plus froid. } else { message.setText( "Correct!" ); setBackground( Color.white ); entreeTentative.setEditable( false ); plusPetit = 1000; plusGrand = 0; } repaint(); } } }