コード例 #1
0
        private void ResetPièces(Pieces A)
        {
            PièceA.Deplacer(CaseA.Centre);
            Compteur--;


            ResetCouleur();
        }
コード例 #2
0
        private void NouvelleReine(Pieces A)
        {
            Pieces nouvellePiece = PièceA.PromoteQueen();

            ListeDesPièces.Add(nouvellePiece);

            ListeDesPièces.Remove(PièceA);
        }
コード例 #3
0
        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);
        }