public void RealizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = ExecutarMovimento(origem, destino); if (EstaEmXeque(JogadorAtual)) { DesfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em Xeque!"); } Peca pecaMovida = Tabuleiro.Peca(destino); //Jogada especial Promocao if (pecaMovida is Peao) { if ((pecaMovida.Cor == Cor.Branca && destino.Linha == 0) || (pecaMovida.Cor == Cor.Branca && destino.Linha == 0)) { pecaMovida = Tabuleiro.RetirarPeca(destino); _pecasEmJogo.Remove(pecaMovida); Peca dama = new Dama(Tabuleiro, pecaMovida.Cor); Tabuleiro.ColocarPeca(dama, destino); _pecasEmJogo.Add(dama); } } if (EstaEmXeque(Adversaria(JogadorAtual))) { Xeque = true; } else { Xeque = false; } if (EstaEmMate(Adversaria(JogadorAtual))) { Terminada = true; } else { Turno++; MudaJogador(); } //Jogada Especial En Passant if (pecaMovida is Peao && (destino.Linha == origem.Linha + 2 || destino.Linha == origem.Linha - 2)) { VulneravelEnPassant = pecaMovida; } else { VulneravelEnPassant = null; } }