LES SYSTEMES REPARTIS (NFP 215)
page 2
La partie s'arrête soit quand il n'existe plus de possibilité de jouer, soit un des chronomètres a atteint les 5
minutes (cette valeur est un paramètre de l'applicatif).
Dans les 2 cas le gagnant est celui qui a le moins de temps à son chronomètre. Le nombre de points marqués est
(300 - le temps en secondes). Le perdant ne marque aucun point.
Le chronomètre démarre dès que le premier joueur joue son premier coup.
L'architecture demandée est constituée de :
un applicatif
deux Ihms (une pour chacun des joueurs)
L'applicatif :
gère la grille de Sudoku (commune aux deux joueurs),
détermine si le coup joué par un joueur est valide,
détermine si il n'existe plus de coup à jouer,
gère les deux joueurs (nom, temps chrono, message),
joue le coup d'un joueur en mettant à jour la grille
gère les deux chronomètres
L'IHM ne fait que permettre à un des joueurs de jouer et à visualiser l'applicatif :
le numéro du joueur déterminé par l'applicatif
affiche toute les secondes la grille de l'applicatif
permet à un joueur de désigner une case libre, de choisir un chiffre et de valider son coup
affiche les 2 chronomètres
affiche le message géré par l'applicatif associé à chacun des joueurs
envoyer un message au joueur adverse
Ainsi, l'IHM utilise une interface Java qui est implémentée par l'applicatif.
Cette interface est la suivante :
// AppSudokuInt.java
//Interface des methodes de l'applicatif utilisées par les IHM permettant
// de jouer au Sudoku
package cnamp.app;
import java.awt.Point;
/**
* Interface de définition des méthodes de l'applicatif utilisé par
l'IHM.<BR>
* Cette interface permet de séparer le développement de l'IHM et de
l'applicatif.<BR>
* De plus, elles sera indispensable pour la réalisation du projet 2.<BR>
* Toutes les méthodes de cette interface doivent être implémentées par
l'IHM.<BR><BR>
* La grille des coups contient une valeur entière: 0 case vide, N numéro
de 1 à 9.
**/
public interface AppSudokuInt
{
/**
* Ajoute un nouveau joueur à l'applicatif
* @param nomJoueur nom du joueur (texte libre)
* @return le numero du joueur (de 1 à 2), -1 si trop de joueur