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