Example #1
0
 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);
     }
 }
Example #2
0
        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;
        }
Example #3
0
 private void ColocarNovaPeca(char coluna, int linha, Peca peca)
 {
     Tabuleiro.ColocarPeca(peca, new PosicaoXadrez(coluna, linha).ToPosicao());
     PecasEmJogo.Add(peca);
 }