private void PromocaoDoPeao(Peca peca, Posicao destino) { if ((peca.Cor == Cor.Branco && destino.Linha == 0) || (peca.Cor == Cor.Preto && destino.Linha == 7)) { peca = Tabuleiro.RetirarPeca(destino); PecasEmJogo.Remove(peca); Peca Dama = new Dama(Tabuleiro, peca.Cor); Tabuleiro.ColocarPeca(Dama, destino); PecasEmJogo.Add(Dama); } }
public void RealizaJogada(Posicao origem, Posicao destino) { Peca pecaCapturada = ExecutarMovimento(origem, destino); Peca pecaMovida = Tabuleiro.Peca(destino); if (EstaEmXeque(JogadorAtual)) { DesfazMovimento(origem, destino, pecaCapturada); throw new TabuleiroException("Você não pode se colocar em xeque!"); } //#JogadaEspecial Promoção if (pecaMovida is Peao) { if ((pecaMovida.Cor == Cor.Branca && destino.Linha == 0) || (pecaMovida.Cor == Cor.Preta && destino.Linha == 7)) { pecaMovida = Tabuleiro.RetirarPeca(destino); PecasEmJogo.Remove(pecaMovida); Peca dama = new Dama(Tabuleiro, pecaMovida.Cor); Tabuleiro.ColocarPeca(dama, destino); PecasEmJogo.Add(dama); } } EmXeque = EstaEmXeque(CorAdversariaACor(JogadorAtual)); if (TesteXequeMate(CorAdversariaACor(JogadorAtual))) { Terminada = true; } else { Turno++; MudaJogador(); } //#JogadaEspecial En Passant bool isVuneravelEnPassant = pecaMovida is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2); PecaVuneravelAEnPassant = isVuneravelEnPassant ? pecaMovida : null; }
private void ColocarNovaPeca(char coluna, int linha, Peca peca) { Tabuleiro.ColocarPeca(peca, new PosicaoXadrez(coluna, linha).ToPosicao()); PecasEmJogo.Add(peca); }