LES SYSTEMES REPARTIS (NFP 215)
Projet 1
17/04/2017
Par J. LAFORGUE
page 1
Cnam
CONSERVATOIRE
N A T I O N A L
D E S A R T S
E T M E T I E R S
CENTRE REGIONAL
MIDI - PYRENEES
1. SPECIFICATION
On se propose de réaliser une application java permettant à 2 joueurs de jouer au jeu du SUDOKU.
Pour plus d'information sur ce jeu voir http://fr.wikipedia.org/wiki/Sudoku.
Le jeu se déroule dans une grille de 9x9 cases divisées en 6 régions 3x3.
La seule contrainte est qu'il ne faut pas qu'il y ait 2 fois le même chiffre dans chaque ligne, colonne et région.
Exemple :
Au départ, la grille est vide.
Les 2 joueurs s'affrontent en inscrivant chacun son tour 1 chiffre (de 1 à 9) dans une des cases de la grille.
Deux horloges permettent de décompter le temps de réflexion de chacun des joueurs: dès que un joueur joue le
programme arrête son chronomètre et démarre celui de l'adversaire.
Si un des joueurs joue un coup impossible (conflit avec un autre chiffre) alors le coup est refusé, le joueur doit
rejouer et son chronomètre continue.
IPST-CNAM
Cycle C
Années 2006-2007
J. LAFORGUE
LES SYSTEMES
REPARTIS
PROJET 1
LES SYSTEMES REPARTIS (NFP 215)
Projet 1
17/04/2017
Par J. LAFORGUE
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 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
LES SYSTEMES REPARTIS (NFP 215)
Projet 1
17/04/2017
Par J. LAFORGUE
page 3
**/
public int addJoueur(String aNomJoueur);
/**
* Action de jouer un coup par un joueur<BR>
* Cette methode est void car c'est à l'applicatif de tester si le coup
est valide ou non<BR>
* Si le coup n'est pas valide alors l'applicatif ne joue pas le coup et
indique au joueur que le coup est invalide.
* @param joueur numero du joueur
* @param x numero de colonne du coup (à partir de 0)
* @param y numero de ligne du coup (à partir de 0)
* @param v valeur du chiffre
**/
public void jouer(int joueur,int x,int y,int v);
/**
* Retourne la taille de la grille
* @return retourne le nbre de colonne et de ligne sous la forme d'un
point new Point(Nbre de colonne, nbre de Ligne)
**/
public Point getTailleGrille();
/**
* Retourne la taille d'une région
* @return retourne le nbre de colonne dela region et de ligne de la
region sous la forme d'un point new Point(Nbre de colonne, nbre de Ligne)
**/
public Point getTailleRegion();
/**
* Envoyer un message a tout les autres joueurs
* @param joueur numero du joueur qui envoie le message
* @param message message à envoyer (texte libre)
**/
public void envoyerMessage(int aJoueur,String aMessage);
/**
* retourne le message d'un joueur<BR>
* Cette méthode est utilisé par chaque IHM pour obtenir son message.
* @param numeroJoueur numero du joueur
* @return le message du joueur
**/
public String getMessage(int numeroJoueur);
/**
* change le message d'un joueur en particulier
* @param joueur numero du joueur
* @param message nouveau message
**/
public void setMessage(int joueur,String message);
/**
* retourne la grille de l'applicatif
* @return la grille dans sa totalité
**/
public int[][] getGrille();
/**
* retourne le joueur courant
* @return le numero du joueur courant
LES SYSTEMES REPARTIS (NFP 215)
Projet 1
17/04/2017
Par J. LAFORGUE
page 4
**/
public int getJoueurCourant();
/** retourne le temps chrono d'un joueur
* @param aJoueur le numero de joueur
* @return le temps en seconde
*/
public int getTempsChrono(int aJoueur);
LES SYSTEMES REPARTIS (NFP 215)
Projet 1
17/04/2017
Par J. LAFORGUE
page 5
1.1. Caractéristiques de l'IHM
Chaque joueur a une instance de la classe d'IHM.
Cette IHM affiche la grille gérée par l'applicatif sous la forme d'un quadrillage contenant des valeurs entières, de
1 à N. Si 0 alors la case est vide. (N peut être égale à 9). N = nbre de colonne d'une région X nbre de ligne d'une
région.
L'IHM affiche le message du joueur géré par l'applicatif.
Elle permet de saisir un texte qui consiste à changer le message de tous les autres joueurs.
Pour réaliser cet affichage l'IHM crée un thread qui interroge l'applicatif cycliquement afin de rafraîchir les
informations de l'IHM gérées par l'Applicatif.
1.2. Caractéristiques de l'applicatif
L'applicatif est caractérisé par au moins les informations suivantes :
une grille d'entier
nombre de colonne de la grille (exemple: 9 ou 4)
nombre de ligne de la grille (exemple (9 ou 4)
nombre de colonne d'une région de la grille (3 ou 2)
nombre de ligne d'une région de la grille (3 ou 2
un tableau de joueur de 1 à 2.
o Un joueur est caractérisé par :
un message courant (String)
le numéro du joueur (de 1 à 2)
1 / 7 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !