Université Paris-Sud 11 Polytech / E3 Info
IHM

Le site du cours
Anastasia Bezerianos

TP: Salle B009 (Groupe 1) et salles B003 (Groupe 2)

Marc Bouffard (Groupe 1)
Jérémie Garcia (Groupe 2)

1-2. Jeudi, 20 février, 8h15-12h30 Evenements, MVC, premières interfaces
3. Jeudi, 6 mars, 10h30-12h30
4. Jeudi, 13 mars, 10h30-12h30
5. Jeudi, 20 mars, 10h30-12h30
6. Jeudi, 27 mars, 10h30-12h30 Aide pour les projets

Projet A envoyer par mail à vos chargés de TP avant le 6 mai 23h59 au dela, c'est 1 point en moins toutes les 5 minutes.

Présentation orale : 7 et 9 mai 2014.

Ressources

Slides de cours:
- Listeners

Autres
- Comment utiliser Eclipse
- Thinking in Java et Thinking in Java en Français
- Description des layouts managers en français
- Introduction à Java Swing
- Apprendre à programmer en Java
- Écoute d'événements
- Dessin avec Java Swing
- Plusieurs exemples mettant en œuvre Java Swing avec les sources
- Gestion d'images avec Java Swing

Remerciements

La plupart des exercices ont été conçus par Nicolas Roussel.
Le design est adapté de celui réalisé par David Bonnet l'année dernière (Mais vous n'y trouverez pas les solutions...).

TP 1 et 2 — Jeudi, 20 février, 2014

Layout managers, labels, boites de texte et boutons

Le but de cet exercice est de créer un convertisseur de temperature contenant :

  1. Télécharger le fichier TempConverter.java.
  2. Compléter la fonnction init() dans le fichier TempConverter.java en utilisant la classe JPanel et un layout managers de votre choix pour obtenir un résultat simalaire à l'image ci-dessus.
  3. Vérifier que les composants soient bien alignés et que leurs position restes cohérente lorsqu'on redimensionne la fenêtre.
  4. textFieldCListener lit une nombre réel dans la boite de texte Celsius quand l'utilisateur clicque sur le bouton "enter", convertissé cette valeur en Fahrenheit puis mettre à jour la boite de texte correpondante. Associer ce listener à la boite de text Celsius.
  5. Compléter textFieldFListener pour effecture la conversion inverse, de Fahrenheit à Celsius. Associer ce listener avec la boite de texte Farhenheit.
  6. buttonCloseListener permet de fermer la fenêtre closes the window. Associer le avec le bouton fermer.
  7. Completer la classe buttonResetListener pour qu'elle efface le contenu de deux boites de texte. Associer le avec le bouton reset.
  8. La conversion de temperature est faite quand l'utilisateur appuie sur le bouton enter. Utiliser un KeyListener (à attacher avec JTextField.addKeyListener) au lieu d'un ActionListener. Le KeyListener recevra un evenment à chaque appui sur une touche du clavier.

Solution

Ce qu'il faut retenir :

Variables liées : Sélecteur de couleur

Enoncé de l'exercice

  1. Télécharger le fichier ColorChooser.java.

Ce qu'il faut retenir :

Solution

TP 3 — Jeudi, 6 mars


Menu déroulant et listes : sélecteur de fichiers

Enoncé de l'exercice

File selector

Solution

TP 4 — Jeudi, 13 mars, 10h30-12h30

Dessin structuré

Enoncé de l'exercice

File selector

Solution

TA 5 — Jeudi, 20 mars, 10h30-12h30

Aide pour les projets

Nous vous conseillons de réaliser les exercices suivants qui pourront être discuter durant la scéance.

TA 6 — Jeudi, 27 mars, 10h30-12h30

Homework

TPs et projet Vous DEVEZ avoir fini tous les TPs et démarré le projet

Aide pour les projets

Nous pourrons vous aider sur les projets. En particulier, soyez sur de savoir créer un .jar éxécutable à partir de vos sources.

Projet : Jeu de puzzle interactif (Sporos pour les intimes)

Le projet consiste à implémenter un puzzle game (jeu basé sur un casse-tête, donc pour chaque niveau il faut résoudre le problème posé). Le but de ce jeu est de contaminer toutes les cellules (cases) visibles en plaçant des spores (pions). Les pions ont des propriétés spéciales, ils vont conquérir d’autres cases dans différentes directions. Ces directions dépendent du motif inscrit sur le pion. De plus il n’est possible de poser un pion que sur une case vide non contaminée. Chaque niveau du jeu peut s’apparenter à un SuDoKu au sens où il va falloir remplir toute la « grille » avec les éléments qui nous sont donnés pour le niveau.

Cette vidéo donne un aperçu du fonctionnement de ce type de jeu.

L'interface du jeu avec les fonctions de base devra contenir les éléments illustrés dans la figure ci-dessous (leur comportement est décrit dans la sous-section suivante) :

Partie

Une partie peut être démarrée en passant préalablement par une fenêtre avec ces éléments (pas forcement identiques, vous êtes libres d’exercer votre instinct créatif dans le choix du style et des couleurs) :

Acceuil

Fonctions de base

Fonctions avancées

Grille

Dans cet exemple légèrement commenté on peut voir la grille sous-jacente en rouge (ici la grille est hexagonale), un pion déplaçable en vert et une case conquise en cyan.

Fonctions ultra avancées

Livraison et évaluation

Le logiciel doit être envoyé par mail à vos chargés de TP avant le 6 mai 23h59, en mettant Anastasia en copie. Le titre du mail doit avoir le format suivant : [IHM] Sporos Nom_A Nom_B (Remplacez Nom_A et Nom_B par vos noms de famille). Ce mail devra contenir une archive zippée renfermant : - le code source de votre programme, - un JAR exécutable de votre programme (veillez à ce qu'il soit autonome), - un rapport (4-6 pages) décrivant les choix architecturaux effectués, les fonctions implémentées et les éventuelles difficultés rencontrées.

Le projet sera évalué en fonction de la qualité d'implémentation, de la présence des fonctions de base et sur le nombre de fonctions avancées incluses. L'implémentation des fonctions de base est obligatoire et permet d'obtenir une note moyenne (aux alentours de 10). Toute fonction avancée supplémentaire augmente la note de 2 points environ (en fonction de la difficulté). Une attention particulière est accordée à l'interaction (indices visuels, choix des formes et des couleurs, etc.) qui pondèrera également la note finale du projet.

Présentations orales :

Vous devrez présenter vos projets lors d’une soutenance qui aura lieu soit le 7 mai soit le 9 mai selon votre groupe (à définir plus tard).

Groupes

Vous devez travailler en binôme et nous indiquer au plus tard le 13 mars qui vous allez réaliser le projet. Les binômes déclarés sont listés ici.

Groupe 1 :

Groupe 2 :