1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160
| public void mouseClicked(MouseEvent eve) {
// si on clique sur le bouton débuter
if (eve.getSource() == boutonDebuter) {
//initialise le champ texte, apelle la methode debuter, et initialise toute les variables
champTexte.setText("blanc a vous de jouer");
champTexte.setEnabled(false);
boutonDebuter.setEnabled(false);
e.debuter(); // appel
String dossierIcone = "Icone/";
char[] ordrePiece = { 'T', 'C', 'F', 'D', 'R', 'F', 'C', 'T' };
int increment = 1;
int ligne = 0;
char couleur = 'N';
Piece tempo = null;
e.debuter(); // appel
// Je place les icones des pieces sur leur cases respectives
while (increment >= -1) {
for (int ctr = 0; ctr <= 7; ctr++) {
tab[ctr][ligne].setIcon(new ImageIcon(dossierIcone + ordrePiece[ctr] + couleur + ".gif"));
switch(ordrePiece[ctr])
{
case 'T':
tempo = new Tour(ligne < 5 ? "noir" : "blanc");
break;
case 'C':
tempo = new Cavalier(ligne < 5 ? "noir " : "blanc");
break;
case 'F':
tempo = new Fou(ligne < 5 ? "noir" : "blanc");
break;
case 'D':
tempo = new Reine(ligne < 5 ? "noir" : "blanc");
break;
case 'R':
tempo = new Roi(ligne < 5 ? "noir" : "blanc");
break;
}
e.getCase(ctr, ligne).setPiece(tempo);
tab[ctr][ligne + increment].setIcon(new ImageIcon(dossierIcone + 'P' + couleur + ".gif"));
e.getCase(ctr, ligne + increment).setPiece(new Pion(ligne < 5 ? "noir" : "blanc"));
}
couleur = 'B';
increment -= 2;
ligne = 7;
}
}
// si on clique sur le bouton recommencer
else if (eve.getSource() == boutonfin) {
//on appel la methode RAZ
RAZ();
}
else if (eve.getSource() instanceof JLabel) // donc on a cliqué sur un Label
{
for (int i = 0; i < 8; i++)
//on determine sur quel Jlabel on a clique
for (int j = 0; j < 8; j++)
if (eve.getSource() == tab[j][i]) {
ligneClic = i;
colonneClic = j;
}
//si on a clique sur une case non vide et que le tampon n'est pas null
if((e.getCase(colonneClic, ligneClic).getPiece() != null | pieceTampon != null) )
{
//si le tampon est null
if(pieceTampon == null )
{
//si c'est au tour de la couleur de controle a jouer
if(e.getCase(colonneClic, ligneClic).getPiece().getCouleur().equals(couleurControle)){
//J'initialise la piece tampon a la piece sur laquelle on a clique
pieceTampon = e.getCase(colonneClic, ligneClic).getPiece();
iconeTampon = (ImageIcon)tab[colonneClic][ligneClic].getIcon();
temp = new Position(colonneClic,ligneClic);
tab[colonneClic][ligneClic].setBorder(BorderFactory.createLineBorder(new Color(255,0 ,0),5));
for (int ligne = 0; ligne < 8; ligne++) {
for (int colonne = 0; colonne < 8; colonne++) {
Position pos = new Position(colonne,ligne);
Deplacement deplacement=new Deplacement(temp,pos);
tab[colonne][ligne].setCoupPossible(pieceTampon.estValide(deplacement)); }
}
}
}
else
{
//je cree un deplacement
for (int ligne = 0; ligne < 8; ligne++) {
for (int colonne = 0; colonne < 8; colonne++) {
tab[colonne][ligne].setCoupPossible(null);
}
}
Deplacement deplacement = new Deplacement(temp, new Position(colonneClic,ligneClic));
//je verifie si le deplacement est valide, si le chemin est possible et si il est possible, pour un pion de manger la piece
if ((pieceTampon.estValide(deplacement) && e.cheminPossible(deplacement)) | e.captureParUnPionPossible(deplacement))
{
//je cree un jLabel avec l'icone de la piece manger
JLabel manger = new JLabel(tab[colonneClic][ligneClic].getIcon());
manger.setHorizontalAlignment(SwingConstants.CENTER);
//je l'ajoute au bon jPanel
if (couleurControle.equals("blanc"))
panelblanc.add(manger);
else
panelnoir.add(manger);
// je verifie si la piece manger est un roi, si oui le jeu est termine et l'utilisateur peut choisir si il veut continuer a jouer ou non
if(e.getCase(colonneClic, ligneClic).getPiece() instanceof Roi)
{
if(JOptionPane.showConfirmDialog(null, "Felicitation vous avez gagne ! Desirez-vous jouer de nouveau ?\n", "Victoire !!!", JOptionPane.YES_NO_OPTION) == 0){
RAZ();
tab[temp.getColonne()][temp.getLigne()].setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0),0)); // j'enleve le cadre rouge de la piece selectionne
}
else
System.exit(0);
}
else//si on depose la piece sur une case vide
{
//on met le tampon sur la case vide et on vide le tampon apres
e.getCase(temp.getColonne(), temp.getLigne()).setPiece(null);
tab[temp.getColonne()][temp.getLigne()].setBorder(BorderFactory.createLineBorder(new Color(0, 0, 0),0)); // j'enleve le cadre rouge de la piece selectionne
tab[colonneClic][ligneClic].setIcon(iconeTampon);
e.getCase(colonneClic, ligneClic).setPiece(pieceTampon); // pour pouvoir le rebouger plusieurs fois dans une partie
tab[temp.getColonne()][temp.getLigne()].setIcon(null); // permet de faire bouger la piece selectionne en supprimant la piece bouger de sa position initiale
pieceTampon = null;
iconeTampon = null;
temp = null;
couleurControle = couleurControle.equals("blanc") ? "noir" : "blanc";
champTexte.setText(couleurControle + " , a vous de jouer");
}
}
else
{
tab[temp.getColonne()][temp.getLigne()].setBorder(BorderFactory.createLineBorder(new Color(255, 0, 0),0));
pieceTampon = null;
iconeTampon = null;
temp = null;
}
}
}
} |