Ejemplo n.º 1
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca PecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

            p.DescrementarQteMovimentos();
            if (PecaCapturada != null)
            {
                Tab.ColocarPeca(PecaCapturada, destino);
                capturadas.Remove(PecaCapturada);
            }
            Tab.ColocarPeca(p, origem);

            //#Jogada Especial roque pequeno
            if (p 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        = Tab.RetirarPeca(destinoT);
                T.DescrementarQteMovimentos();
                Tab.ColocarPeca(T, origemT);
            }
            //#Jogada Especial roque grande
            if (p 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        = Tab.RetirarPeca(destinoT);
                T.IncrementarQteMovimentos();
                Tab.ColocarPeca(T, origemT);
            }
            //JogadaEspecial En Passant
            if (p is Peao)
            {
                if (origem.coluna != destino.coluna && PecaCapturada == VulneravelEnPassant)
                {
                    Peca    peao = Tab.RetirarPeca(destino);
                    Posicao posP;
                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(3, destino.coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.coluna);
                    }
                    Tab.ColocarPeca(peao, posP);
                }
            }
        }