Ejemplo n.º 1
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapiturada)
        {
            Peca peca = Tabuleiro.RetirarPeca(destino);

            peca.DecrementarQtemovimentos();
            if (pecaCapiturada != null)
            {
                Tabuleiro.ColocarPeca(pecaCapiturada, destino);
                Capituradas.Remove(pecaCapiturada);
            }
            Tabuleiro.ColocarPeca(peca, origem);

            // jogadaEspecial Roque Pequeno
            if (peca is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao origemT  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao destinoT = new Posicao(origem.Linha, origem.Coluna + 1);
                Peca    T        = Tabuleiro.RetirarPeca(destinoT);
                T.DecrementarQtemovimentos();
                Tabuleiro.ColocarPeca(T, origemT);
            }

            // jogadaEspecial Roque Grande
            if (peca is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao origemT  = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao destinoT = new Posicao(origem.Linha, origem.Coluna - 1);
                Peca    T        = Tabuleiro.RetirarPeca(destinoT);
                T.DecrementarQtemovimentos();
                Tabuleiro.ColocarPeca(T, origemT);
            }

            // #jogadaEspecial En Passant
            if (peca is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapiturada == VulneravelEnPassant)
                {
                    Peca    peao = Tabuleiro.RetirarPeca(destino);
                    Posicao posP;
                    if (peca.Cor == Cor.Branca)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }
                    Tabuleiro.ColocarPeca(peao, posP);
                }
            }
        }