Cours
d'Interfaces Homme-Machine
Polytech'Grenoble & UFR-IMA
F. Jambon - Université J. Fourier
Le but de ces travaux pratiques est de réaliser l'interface homme-machine d'un jeu de Morpion, sur dispositif mobile (J2ME avec CDLC et MIDP), et en implantant le modèle d'architecure logicielle Seeheim vu en cours.
Buts
pédagogiques :
Implantation du modèle d'architecture Seeheim, utilisation des
API MIDP "low-level" (création d'un Widget
spécialisé héritant d'un Canvas
).
Le jeu de Morpion se joue sur un plateau de neuf cases. Chacun des joueurs inscrit tour à tour une croix où un rond dans l'une des cases vides. Pour cela il utilise les touches (numériques de 1à 9) du clavier du dispositif. Le premier des joueurs qui a aligné trois croix ou ronds a gagné. Le noyau fonctionnel du jeu vous est fourni. L'interface homme-machine que vous devez réaliser se compose (de haut en bas) :
Votre application doit être réalisée selon le modèle d'architecture logicielle Seeheim. Pour cela vous devez répartir le code en quatre modules distincts :
AppliMorpion.java
.
Il dispose de méthodes de debuggage
intégrées. Le module Présentation doit disposer des méthodes suivantes :
public
void afficheCase (int l, int c, int j)
: affiche à la position indiquée par la ligne l
et la colonne c
une croix ou un rond selon le numéro du joueur j
(1 ou 2). Si ce numéro est zéro, cela efface le
contenu de la case (ce sera utile pour effacer le plateau de jeu pour
une nouvelle partie). public
void afficheTour (int j)
:
affiche un message avec le symbole (croix ou rond) du joueur j
dont c'est le tour. public
void afficheVainqueur (int j)
: affiche un message avec le symbole (croix ou rond) du joueur j
qui a gagné, ou un message indiquant match nul (si j
est nul). Le module Présentation doit réagir aux événements ou commandes suivants :
Une des techniques possibles est de dessiner le jeu dans une classe
Plateau qui hérite d'un Canvas. Cette classe Plateau est alors
un attribut de la classe Présentation (qui sera ici une MIDlet).
Cette classe Plateau est donc en charge de toute la gestion de l'affichage et de la remise à jour si besoin de cet affichage. Notamment elle doit se réafficher à chaque modification (ajout, effacement) des pions ou si la taille du Canvas a été modifiée.
Il vous est conseillé de définir comme attribut, dans la classe Plateau, d'un tableau d'entiers représentant les pions, et à chaque demande de réaffichage, de tout redessiner à partir des informations contenues dans ce tableau.
Le contrôleur de Dialogue va être sollicité par la Présentation par l'intermédiaire de trois méthodes :
public
void demandeJouer(int l, int c)
: cette méthode est appelé lorsque l'utilisateur a
appuyé sur l'un des boutons du clavier. Le contrôleur de
dialogue fait les vérifications nécessaires puis
met à jour le noyau fonctionnel et les affichages. public
void demandeRejouer()
: cette
méthode est appelé lorsque l'utilisateur a activé
la commande "Rejouer". Le contrôleur de dialogue
réinitialise alors le jeu et propose une nouvelle partie.public
void demandeQuitter()
: cette
méthode est appelé lorsque l'utilisateur a activé
la commande "Quitter". Dans tous les cas le contrôleur de
dialogue doit quitter l'application (partie
terminée ou non). Si vous avez terminé le jeu clasique, vous pouvez modifier celui-ci afin de prendre en compte le score de chacun des joueurs sur plusieurs parties. Pour cela vous devez :