public void DesfazerMoviemnto(Posicao origem, Posicao destino, Peca pecaCapturada) { Peca peca = Tabuleiro.RetirarPeca(destino); peca.DecremetarMovimentos(); if (pecaCapturada != null) { Tabuleiro.ColocarPeca(pecaCapturada, destino); PecasCapturadas.Remove(pecaCapturada); } Tabuleiro.ColocarPeca(peca, origem); //Roque pequeno if (peca 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 = Tabuleiro.RetirarPeca(destinoTorre); torre.DecremetarMovimentos(); Tabuleiro.ColocarPeca(torre, origemTorre); } //Roque grande if (peca 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 = Tabuleiro.RetirarPeca(destinoTorre); torre.DecremetarMovimentos(); Tabuleiro.ColocarPeca(torre, origemTorre); } //en passant if (peca is Peao) { if (origem.Coluna != destino.Coluna && pecaCapturada == VulneravelEmPassant) { Peca pecaPeao = Tabuleiro.RetirarPeca(destino); Posicao pos; if (peca.Cor == Cor.Branca) { pos = new Posicao(3, destino.Coluna); } else { pos = new Posicao(4, destino.Coluna); } Tabuleiro.ColocarPeca(pecaPeao, pos); } } }