Classe Damier
import java.rmi.*;
import java.rmi.server.*;
import java.util.Vector;
/** <B>Cahier des charges :</B>
*
* <p>Classe décrivant les actions permettant aux clients de jouer en réseau et
ainsi d'implémenter les méthodes de l'interface DamierDistant.
*
* @author Guillaume BLANC
* @author Cyrille FLAMBART
* @version JDK 1.1.6
* @see DamierDistant
* @see Client
* @see ClientDistant
*
*/
//****************************Classe Damier**********************
/*Cette classe décrit les méthodes que les clients vont pouvoir utiliser pour jouer en
réseau*/
public class Damier extends UnicastRemoteObject implements DamierDistant{
//Ce Vector va contenir la référence de tous les clients qui vont
jouer simultanément au jeu de dames
private Vector mesClients;
//****************************Constructeur
Damier******************************************
/** Constructeur de la classe <code>Damier</code> construisant un vecteur
permettant
* par la suite de stocker less deux instances de client.
*/
//Constructeur de la classe Damier qui limite le Vector à deux éléments (deux clients
au maximum)
public Damier() throws RemoteException{
mesClients = new Vector(2);
}//Fin du constructeur Damier
//****************************Méthode
addClient********************************************
/** Méthode d'ajout d'instances de client dans le vecteur en retournant le nombre total
d'instances
* présente dans ce dernier.
*
* @param <code>client</code> Client à ajouter.
*/
//Cette méthode ajoute les clients a un tableau de clients
public int ajouterClient(ClientDistant client) throws RemoteException{
//Si aucun client n'est encore référencé, on le place dans le
tableau et on retourne la valeur 1
if (mesClients.size() == 0){
mesClients.addElement(client);
return (1);
}//Fin du if (mesClients.size() == 0)
else{
//S'il n'y a qu'un seul client de référencé, on le place dans le
tableau et on retourne la valeur 2
if (mesClients.size() == 1){
mesClients.addElement(client);
((ClientDistant)(mesClients.elementAt(0))).afficheToi();
((ClientDistant)(mesClients.elementAt(1))).afficheToi();
return (2);
}//Fin du if (mesClients.size() == 1)
else
//Si deux clients sont déjà enregistrées, on retourne la valeur 0
return (0);
}//Fin du else du if (mesClients.size() == 0)
}//Fin de la méthode ajouterClient
//****************************Méthode
redessinerClients************************************
/** Méthode permettant d'actualiser l'affichage des deux instances présentes dans le
vecteur.
*
* @param <code>client</code> Dernier client qui a joué.
*/
/*Cette méthode reçoit en parametre le client sur le quel une action vient d'être
effectuée.
Elle passe alors en revue le tableau qui reference les clients afin de les informer du
pion
qui vient d'être joue par le joueur*/
public void redessinerClients(ClientDistant client) throws RemoteException{
((ClientDistant)(mesClients.elementAt(0))).redessineToi(client.getPionJoue());
((ClientDistant)(mesClients.elementAt(1))).redessineToi(client.getPionJoue());
}//Fin de la méthode redessinerClients
//****************************Méthode
annulerDeplacement***********************************
/** Méthode permettant d'annuler le dernier déplacement du client qui a joué.
*
*/
public void annulerDeplacement() throws RemoteException{
((ClientDistant)(mesClients.elementAt(0))).annulerDeplacement();
((ClientDistant)(mesClients.elementAt(1))).annulerDeplacement();
}//Fin de la méthode annulerDeplacements
//****************************Méthode
nouvellePartie***************************************
/** Méthode permettant de redessiner entièrement les fenêtres des deux clients.
*
*/
public void nouvellePartie() throws RemoteException{
((ClientDistant)(mesClients.elementAt(0))).nouvellePartie();
((ClientDistant)(mesClients.elementAt(1))).nouvellePartie();
}//Fin de la méthode nouvellePartie
//****************************Méthode
deconnecterClients***********************************
/** Méthode permettant aux clients de se déconnecter selon la demande de l'un deux.
*
* @param <code>client</code> Client ayant demandé sa déconnexion.
*/
public void deconnecterClients(ClientDistant client) throws RemoteException{
if((mesClients.elementAt(0)).equals(client))
((ClientDistant)(mesClients.elementAt(1))).deconnecteToi();
else
((ClientDistant)(mesClients.elementAt(0))).deconnecteToi();
//return true;
}//Fin de la méthode deconnecterClients
//****************************Méthode
gagne************************************************
/** Méthode permettant d'afficher une boîte de dialogue personnalisée selon l'issue du
jeu.
*
* @param <code>type</code> Type du pion qui a gagné.
*/
public void gagne(int type) throws RemoteException{
((ClientDistant)(mesClients.elementAt(1))).gagneClient(type);
((ClientDistant)(mesClients.elementAt(0))).gagneClient(type);
}//Fin de la méthode gagne
}//Fin de la classe Damier