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); } } }