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
| 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) ||.e.prisePionEnPassant(deplacement,false))
{
Piece piecePrise = e.getCase(colonneClic, ligneClic).getPiece();
Icon iconPiecePrise = tab[colonneClic][ligneClic].getIcon();
if ( pieceTampon instanceof Pion && e.prisePionEnPassant(deplacement, false) ) {
piecePrise = e.getCase(deplacement.getArrivee().getColonne(),deplacement.getDepart().getLigne()).getPiece();
iconPiecePrise = tab[deplacement.getArrivee().getColonne()][deplacement.getDepart().getLigne()].getIcon();
tab[deplacement.getArrivee().getColonne()][deplacement.getDepart().getLigne()].setIcon(null); // pièce prise
}
if ( iconPiecePrise!=null ) {
//je cree un jLabel avec l'icone de la piece manger
JLabel manger = new JLabel(iconPiecePrise);
manger.setHorizontalAlignment(SwingConstants.CENTER);
//je l'ajoute au bon jPanel
if (couleurControle==(COULEUR_JOUEUR_BLANC))
panelblanc.add(manger);
else
panelnoir.add(manger);
}
Partie.nouveauCoup(couleurControle,pieceTampon,deplacement,piecePrise);
// 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.enregistreDeplacement(true);
if ( pieceTampon instanceof Pion ) {
}
if ( pieceTampon instanceof Roi ) {
if ( Math.abs(deplacement.getDeplacementX())==2) {
// faut que je déplace aussi la tour derrière le roi
int xtourDepart, xtourArrivee;
if( deplacement.getDeplacementX()<0 ) {
// déplacement vers la gauche = grand roque = roque avec la tour gauche (vue des blancs)
xtourDepart=0;
xtourArrivee=3;
}
else {
// déplacement vers la droite = petit roque = roque avec la tour droite (vue des blancs)
xtourDepart=7;
xtourArrivee=5;
}
// on déplace la tour... donc la pièce et l'icone
Piece tour = e.getCase(xtourDepart, ligneClic).getPiece();
e.getCase(xtourArrivee, ligneClic).setPiece(tour);
e.getCase(xtourDepart, ligneClic).setPiece(null);
tour.enregistreDeplacement(true); // ce déplacement doit être compté
tab[xtourArrivee][ligneClic].setIcon(tab[xtourDepart][ligneClic].getIcon());
tab[xtourDepart][ligneClic].setIcon(null);
} |