Пример #1
0
        private void Promote()
        {
            Dame newDame = new Dame(this.joueur);

            this.position.Link(newDame);
            joueur.pieces.Remove(this);
            joueur.pieces.Add(newDame);
        }
Пример #2
0
        public override bool Deplacer(Case destination)
        {
            var sauvePremierDeplacement = premierDeplacement;

            if (!DeplacementValide(destination) ||
                CaseBloquee(destination) ||
                !position.CheminLibre(destination))
            {
                premierDeplacement = sauvePremierDeplacement;
                return(false);
            }

            premierDeplacement = false;

            if (DeplacementEnPassant(destination, true))
            {
                destination.Link(this);
            }
            else if (!DeplacementDiagonal(destination))
            {
                if (destination.piece != null)
                {
                    return(false);
                }
                else
                {
                    destination.Link(this);
                }
            }
            else if (DeplacementDiagonal(destination) && destination.piece != null)
            {
                destination.Link(this);
            }
            else
            {
                return(false);
            }

            // Promotion
            if (DetecterPromotion(destination))
            {
                Dame d = new Dame(joueur);
                d.position        = destination;
                destination.piece = d;
                position.echiquier.partie.vue
                .ActualiserCase(destination.x, destination.y, d.info);
            }

            return(true);
        }