/* 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