public Peca ExecutarMovimento(Posicao origem, Posicao destino) { Peca p = Tabuleiro.RetirarPeca(origem); p.IncrementarQtemovimentos(); Peca pecaCapiturada = Tabuleiro.RetirarPeca(destino); Tabuleiro.ColocarPeca(p, destino); if (pecaCapiturada != null) { Capituradas.Add(pecaCapiturada); } // jogadaEspecial 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 = Tabuleiro.RetirarPeca(origemT); T.IncrementarQtemovimentos(); Tabuleiro.ColocarPeca(T, destinoT); } // jogadaEspecial 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 = Tabuleiro.RetirarPeca(origemT); T.IncrementarQtemovimentos(); Tabuleiro.ColocarPeca(T, destinoT); } // jogadaEspecial En Passant if (p is Peao) { if (origem.Coluna != destino.Coluna && pecaCapiturada == null) { Posicao posP; if (p.Cor == Cor.Branca) { posP = new Posicao(destino.Linha + 1, destino.Coluna); } else { posP = new Posicao(destino.Linha - 1, destino.Coluna); } pecaCapiturada = Tabuleiro.RetirarPeca(posP); Capituradas.Add(pecaCapiturada); } } return(pecaCapiturada); }