TP de Programmation n°11 - octobre 2007


Thème : fenêtres, événements, tableaux à deux dimensions.

A la fin de ce tp, vous aurez programmé un jeu de taquin, comme sur l'écran ci-contre.


Etape 1 : fenêtres et événements

Dans cette première étape, l'objectif est de réutiliser des classes existantes, qui permettent de créer des éléments classiques d'interface : fenêtres, boutons cliquables ; dans une interface graphique, de multiples éléments peuvent chacun réagir à leur manière à un clic souris (ou un appui sur la barre d'espace - on dira un "événement").

Lire, compiler et exécuter les sources java suivants :
  1. le programme DemoFenetre1 affiche une fenêtre et un petit texte dans la fenêtre.
    Faire des essais pour déterminer les propriétés de la fenêtre : peut-elle occuper tout l'écran, se replier, se rouvrir, se fermer ?
  2. Le programme DemoFenetre2 affiche deux objets dans une même fenêtre, en les disposant dans une grille régulière.
    Modifier le programme pour disposer quatre objets en 2 colonnes sur deux lignes
  3. La classe DemoFenetre3 réagit aux clics sur un bouton ; elle contient son programme de test.
    Faire afficher le nombre de clics.
  4. La classe DemoFenetre4 gère les événements de plusieurs boutons.
    Faire afficher le nombre de clics sur chacun des boutons.

En conclusion :
Lorsque dans une classe, certains objets doivent réagir à des événements, on peut inscrire ces objets dans une liste ; cette liste recense ceux des objets qui "écoute" les événements ; toutes les réactions aux événements sont centralisées dans une procédure appelée actionPerformed(ActionEvent ev) ; à chaque arrivée d'événement, cette procédure est déclenchée, balaie la liste des "écouteurs" et exécute les actions programmées, en fonction de l'événement.
Ce dispositif est disponible dès lors que la classe implémente l'interface "ActionListener".

Etape 2 : un programme de taquin
Ecrire une classe Taquin, qui affiche une fenêtre comportant 9 boutons, portant les numéros 1 à 8 et un bouton vide, ou bien 8 boutons et une étiquette, simulant un taquin.
Spécifications :
Quand l'utilisateur clique sur une case voisine de la case vide, la case cliquée et la case vide sont échangées.
Si l'utilisateur clique sur une case qui n'est pas une voisine de la case vide, rien ne se passe.

Il pourra être utile de mémoriser les positions des boutons dans un tableau à deux dimensions :
int [][] tab = new int[3][3];
Ce tableau pourrait contenir le numéro du bouton contenu dans chaque case.

Au cas où il serait nécessaire de transformer un entier en chaine (la chaine formée de la suite de ses chiffres) , ou à l'inverse de récupérer la valeur entière à partir de l'écriture d'un entier, voir les méthodes suivantes :
méthode valueOf de la classe String, avec argument entier
méthode parseInt de la classe Integer, avec argument chaine.
Chaque binôme doit faire parvenir à l'enseignant les SOURCES java écrits lors de ce TP11, par mail.
Le nom ou les noms des auteurs sont mis OBLIGATOIREMENT en commentaire sur la première ligne de chacun des fichiers sources.