Classe Pion

import java.awt.*;
import java.awt.event.*;
import java.awt.event.MouseEvent;

/** <B>Cahier des charges :</B>
*
* <p>Classe de création des cases et des pions du jeu et définissant les événements souris exercés sur ces derniers.
*
* @author Guillaume BLANC
* @author Cyrille FLAMBART
* @version JDK 1.1.6
* @see DamierGraphique
* @see Client
*
*
*/

//****************************Classe Pion*****************************

/* Cette classe définie les constantes de couleur, dessine les pions et
gère les évènements de souris sur ces pions */

public class Pion extends Canvas implements MouseListener
{
protected Pion monPion;
protected int type;
protected boolean estDame;
protected int x, y;

//Définition des valeurs des pions des joueurs et des cases
public final static int France = 1;
public final static int Bresil = -1;
public final static int caseBlanche = 0;
public final static int caseNoire = -100;

//Définition des variables de taille
private final static int taille = 30;
private final static int marge = 5;
private final static int diametre = taille - 2 * marge;

//Définition des couleurs utilisées dans le jeu
private final static Color couleurCaseBlanche = Color.white;
private final static Color couleurCaseNoire = Color.black;
private final static Color couleurPionSelectionne = Color.yellow;
private final static Color couleurDame = Color.yellow;

//Définition des polygones utilisés pour dessiner la Dame et le fond du drapeau Brésilien
private final static Polygon pionDame = new Polygon();
private final static Polygon bleu = new Polygon();
private final static Polygon blanc = new Polygon();
private final static Polygon rouge = new Polygon();
private final static Polygon losange = new Polygon();


    //Description du polygone representant la dame
static{
pionDame.addPoint(marge, marge);
pionDame.addPoint(marge, marge + 15);
pionDame.addPoint(marge + 20, marge + 15);
pionDame.addPoint(marge + 20, marge);
pionDame.addPoint(marge + 14, marge + 6);
pionDame.addPoint(marge + 10, marge);
pionDame.addPoint(marge + 6, marge + 6);
pionDame.addPoint(marge, marge);
}

//Description du polygone representant le losange contenu dans le drapeau brésilien
static{
    losange.addPoint(marge, 15);
    losange.addPoint(15, 10);
    losange.addPoint(25, 15);
    losange.addPoint(15, 20);
    losange.addPoint(marge, 15);
}


//****************************Constructeur Pion*********************************************
/** Constructeur de la classe <code>Pion</code> construisant un pion ou une case.
*
*/   
    /*Le constructeur Pion reçoit en paramètre les coordonnées (x et y) du pion qu'il doit construire
    ainsi que le type du pion (joueur1, joueur2, case blanche ou noire)*/
public Pion(int type, int x, int y)
{
super();
       
        //Définition des cases blanches et noires
switch(type)
{
case France :
case Bresil :
case caseBlanche :
this.type = type;
setBackground(couleurCaseBlanche);
break;
case caseNoire :
default :
this.type = caseNoire;
setBackground(couleurCaseNoire);
break;
}
this.x = x;
this.y = y;
estDame = false;
//On place un ecouteur de souris sur chaque pion du jeu
this.addMouseListener(this);
}//Fin du constructeur Pion


//***************************Méthode getMinimumSize*****************************************
/** Méthode retournant la taille du damier.
*
*/

public Dimension getMinimumSize(){
return new Dimension(taille, taille);
}//Fin de la méthode getMinimumSize


//***************************Méthode getPreferredSize***************************************
/** Méthode retournant la taille du damier.
*
*/

public Dimension getPreferredSize(){
return getMinimumSize();
}//Fin de la méthode getPreferredSize


//***************************Méthode Paint**************************************************
/** Méthode d'affichage ("peinture") des pions
*
* @param <code>g</code> Etat en terme de dessin du pion.
*/

public void paint(Graphics g){
g.clearRect(0, 0, taille, taille);

if((type == caseNoire) || (type == caseBlanche))
return;

        //Si le pion appartient au joueur représentant la France, on dessine le drapeau français
if(type == France)
{
    g.setColor(Color.black);
    g.drawRect(marge, marge, 21, 20);
   
    g.setColor(Color.blue);
    g.fillRect(marge, marge, 7, 20);
       
    g.setColor(Color.white);
    g.fillRect(marge + 7, marge, 7, 20);
       
    g.setColor(Color.red);
    g.fillRect(marge + 14, marge, 7, 20);
}//Fin du if(type == France)

        //Si le pion appartient au joueur représentant le Brésil, on dessine le drapeau brésilien
if(type == Bresil)
{
    g.setColor(Color.green);
    g.fillRect(marge, marge, 20, 20);
   
    g.setColor(Color.yellow);
    g.fillPolygon(losange);
   
    g.setColor(Color.blue);
    g.fillOval(11, 12, 7, 7);
}//Fin du if(type == Bresil)

        //Si le pion est une dame, on dessine une couronne jaune par dessus la couleur du drapeau du pion
if(estDame)
{
g.setColor(couleurDame);
g.fillPolygon(pionDame);
}
}//Fin de la méthode Paint


//***************************Méthode highLight**********************************************
/** Méthode mettant en surbrillance le pion.
*
* @param <code>pionSelectionne</code> Variable traduisant la sélection d'un pion.
*/
/*Cette méthode met en surbrillance le fond du pion lorsque celui-ci est sélectionné par un joueur.
Lors de cette sélection, le fond du pion devient jaune ou redevient blanc si le joueur le désélectionne.
On sait que le pion est sélectionné ou non en fonction de la valeur de la variable booléenne pionSelectionne
passée en paramètre*/
public void highLight(boolean pionSelectionne){
if(pionSelectionne)
setBackground(couleurPionSelectionne);
else
setBackground(couleurCaseBlanche);
repaint();
}//Fin de la méthode highLight


//**************************Evènements souris***********************************************
/** Méthode définissant les actions d'un click de souris sur un pion et
* distribuant cet événement au client ayant joué.
* @param <code>arg[]</code> Tableau d'arguments.
*/
/*Gestion des évènements sur les pions.
Cette méthode reçoit l'évènement sur clic de souris et le distribue à la fenêtre qui
contient le damier et qui va traiter cette action*/
public void mousePressed(MouseEvent e){
((Frame)((this.getParent()).getParent())).dispatchEvent(e);
}//Fin de la méthode mousePressed

public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseClicked(MouseEvent e){}
public void mouseDragged(MouseEvent e){}
public void mouseMoved(MouseEvent e){}
}//Fin de la classe Pion

Précédente ] Remonter ] Suivante ]