public Peca movimento(Posicao origem, Posicao destino) { Peca p = tabu.removerPeca(origem); p.atualizarQtdMovimentos(); Peca pecaCapturada = tabu.removerPeca(destino); tabu.incluirPeca(p, destino); if (pecaCapturada != null) { capturadas.Add(pecaCapturada); } //jogada roque if (p 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(origemTorre); torre.atualizarQtdMovimentos(); tabu.incluirPeca(torre, destinoTorre); } if (p 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(origemTorre); torre.atualizarQtdMovimentos(); tabu.incluirPeca(torre, destinoTorre); } //jogada roque // jogada en passant if (p is Peao) { if (origem.coluna != destino.coluna && pecaCapturada == null) { Posicao posicaoDoPeao; if (p.cor == Cor.Branco) { posicaoDoPeao = new Posicao(destino.linha + 1, destino.coluna); } else { posicaoDoPeao = new Posicao(destino.linha - 1, destino.coluna); } pecaCapturada = tabu.removerPeca(posicaoDoPeao); capturadas.Add(pecaCapturada); } } // jogada en passant return(pecaCapturada); }