/* FPuce.java une puce saute dans la fenêtre !!! utilisation de javax.swing.Timer */ import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Random ; /** nom texte un bouton: puce label:??? étiquette: msg attapez-la! bouton jeu départ !!! étiquette verif 50, 100 appui sur jeu: rendre la puce visible afficher "Attrapez-là !!!" dans msg déplacer la puce, afficher ces coordonnées dans verif appui sur la puce: rendre la puce invisible afficher "Gagné dans msg Ajouter une alarme et un traitement au réveil au réveil de l'alarme: déplacer le bouton afficher ses nouvelles coordonnées compter le nombre de réveil appui sur jeu: rendre la puce visible afficher "Attrapez-là !!!" dans msg nombre de réveil=0 armer l'alarme appui sur la puce: rendre la puce invisible afficher "Gagné" dans msg désarmer l'alarme */ public class FPuce extends JFrame { Button puce = new Button(" ??? "); Label msg = new Label("Attrapez-la !!!"); Button jeu = new Button("départ ???"); Label verif = new Label(" 50, 100"); javax.swing.Timer t; final int ATTENTE=2000; //Construire le cadre public FPuce() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try {jbInit(); } catch(Exception e) {e.printStackTrace();} } //Initialiser le composant private void jbInit() throws Exception { jeu.setBounds(new Rectangle(30, 5, 90, 30)); msg.setBounds(new Rectangle(130, 5, 90, 30)); verif.setBounds(new Rectangle(230, 5, 90, 30)); puce.setBounds(new Rectangle(50, 100, 30, 25)); // this.getContentPane().setLayout(null); this.setSize(new Dimension(400, 300)); this.setTitle("Sauts ..."); this.getContentPane().add(puce, null); this.getContentPane().add(msg, null); this.getContentPane().add(jeu, null); this.getContentPane().add(verif, null); // puce.addActionListener(new AdaptateurBtnPuce(this)); jeu.addActionListener(new AdaptateurBtnJeu(this)); // Mettre en place l'alarme RefReveil obj = new RefReveil(this); t= new Timer(ATTENTE,obj); } // Pour quitter lors de System Close protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if(e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } /** Lancer le jeu */ void reflexeJeu(ActionEvent e) { puce.setVisible(true); msg.setText("Attrapez-là !!!"); t.start(); jeu.setLabel(""+0); } /** La puce est touchée */ void reflexePuce(ActionEvent e) { puce.setVisible(false); msg.setText("Gagné !!!"); t.stop(); jeu.setLabel("Départ !!!"); } public static void main(String[] args) { FPuce fen= new FPuce(); // fen.pack(); fen.setLocation(100,100); fen.setVisible(true); } } // fin class FPuce class AdaptateurBtnJeu implements java.awt.event.ActionListener { FPuce fen; AdaptateurBtnJeu(FPuce f) { this.fen = f; } public void actionPerformed(ActionEvent e) { fen.reflexeJeu(e); } } class AdaptateurBtnPuce implements java.awt.event.ActionListener { FPuce fen; AdaptateurBtnPuce(FPuce f) { this.fen = f; } public void actionPerformed(ActionEvent e) {fen.reflexePuce(e); } } /** Le réveil est déclenché */ class RefReveil implements java.awt.event.ActionListener { Random r = new Random(); FPuce fen; RefReveil(FPuce f) { fen=f; } public void actionPerformed(ActionEvent e) { int larg=(int)(0.8*fen.getWidth()), haut=(int)(0.8*fen.getHeight()); int x=r.nextInt(larg), y=r.nextInt(haut); int cpt=1+Integer.parseInt(fen.jeu.getLabel()); fen.puce.setLocation(x,y ); fen.verif.setText(" "+x+", "+y); fen.jeu.setLabel(""+cpt); } } // fin FPuce.java