コード例 #1
0
        public void desfazerMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca dFM = tabu.removerPeca(destino);

            dFM.atualizarQtdMovimentosRetroativo();
            if (pecaCapturada != null)
            {
                tabu.incluirPeca(pecaCapturada, destino);
                capturadas.Remove(pecaCapturada);
            }
            tabu.incluirPeca(dFM, origem);
            // jogada roque
            if (dFM is Rei && destino.coluna == origem.coluna + 2)
            {
                Posicao origemTorre  = new Posicao(origem.linha, origem.coluna + 3);
                Posicao destinoTorre = new Posicao(origem.linha, origem.coluna + 1);
                Peca    torre        = tabu.removerPeca(destinoTorre);
                torre.atualizarQtdMovimentosRetroativo();
                tabu.incluirPeca(torre, origemTorre);
            }
            if (dFM is Rei && destino.coluna == origem.coluna - 2)
            {
                Posicao origemTorre  = new Posicao(origem.linha, origem.coluna - 4);
                Posicao destinoTorre = new Posicao(origem.linha, origem.coluna - 1);
                Peca    torre        = tabu.removerPeca(destinoTorre);
                torre.atualizarQtdMovimentosRetroativo();
                tabu.incluirPeca(torre, origemTorre);
            }
            // jogada roque
            // jogada en passant
            if (dFM is Peao)
            {
                if (origem.coluna != destino.coluna && pecaCapturada == enPassant)
                {
                    Peca    peao = tabu.removerPeca(destino);
                    Posicao posicaoPeao;
                    if (dFM.cor == Cor.Branco)
                    {
                        posicaoPeao = new Posicao(3, destino.coluna);
                    }
                    else
                    {
                        posicaoPeao = new Posicao(4, destino.coluna);
                    }
                    tabu.incluirPeca(peao, posicaoPeao);
                }
            }
            // jogada en passant
        }