private void ResetPièces(Pieces A) { PièceA.Deplacer(CaseA.Centre); Compteur--; ResetCouleur(); }
private void NouvelleReine(Pieces A) { Pieces nouvellePiece = PièceA.PromoteQueen(); ListeDesPièces.Add(nouvellePiece); ListeDesPièces.Remove(PièceA); }
public bool EstMat() { bool t = true; //ON TROUVE L'ENSEMBLE DES PIÈCES DU JOUEUR QUI PEUT ÊTRE MAT foreach (Pieces l in ListeDesPièces.FindAll(x => x.Couleur != Couleur)) { Pieces laPiece = null; Vector3 posPiece = Vector3.Zero; Vector3 posIni = l.Position; foreach (Cases r in ListeDesCases) { //ON TROUVE L'ENSEMBLE DES DÉPLACEMENTS QUE PEUT FAIRE CETTE PIÈCE if (l.LogiqueDéplacement(new Vector2((r.Centre.Z - l.Position.Z), (r.Centre.X - l.Position.X))) && NeSautePas(r.Centre, l.Position)) { l.Deplacer(r.Centre); //ON SORT LA PIÈCE QUI S'EST FAIT MANGER S'IL Y A LIEU foreach (Pieces u in ListeDesPièces.FindAll(x => x.Couleur != l.Couleur)) { if (u.Position == r.Centre) { laPiece = u; posPiece = u.Position; laPiece.Sortir(1000, 1000); } } foreach (Pieces q in ListeDesPièces.FindAll(x => x.Couleur == l.Couleur)) { //SI LE DÉPLACEMENT IMPLIQUE DE MANGER UNE PIÈCE DE LA MAUVAISE COULEUR, ON RESET LA POSITION if (l != q && q.Position == l.Position) { l.Deplacer(posIni); } } if (l.Nom == "/pawn") { if (laPiece == null) { //IL N'Y A PAS EU DE CAPTURE, ON VÉRIFIE DONC LE CAS DU PION QUI SE DÉPLACE SANS MANGER if ((r.Centre.X - posIni.X != 0) && (r.Centre.Z - posIni.Z != 0)) { l.Deplacer(posIni); } } } //ON VÉRIFIE QUE LE ROI NE ROQUE PAS CAR IL EST INVALIDE DE ROQUER LORSQU'ON EST EN ÉCHEC if (l.Nom == "/king" && Math.Abs(r.Centre.Z - posIni.Z) > Partie.LONGUEUR_CASE) { l.Deplacer(posIni); } //ON VÉRIFIE SI LE JOUEUR NE SERAIT PLUS EN ÉCHEC APRÈS AVOIR JOUÉ CE COUP if (!EstEnEchec(l.Couleur)) { t = false; } //ON RESET LA POSITION DE LA PIÈCE QUI A BOUGÉE ET DE CELLE CAPTURÉE CAR ON NE FAIT QUE VÉRIFIER LES CAS POSSIBLES l.Deplacer(posIni); if (laPiece != null) { laPiece.Deplacer(posPiece); } } } } //t EST FALSE SI IL EXISTE UN DÉPLACEMENT VALIDE POUR LEQUEL LE JOUEUR N'EST PAS EN ÉCHEC return(t); }