示例#1
0
 public void ValidarPosicaoDeDestino(Posicao origem, Posicao destino)
 {
     if (!Tabuleiro.PegaPeca(origem).MovimentoPossivel(destino))
     {
         throw new TabuleiroException("Posição de destino inválida!");
     }
 }
示例#2
0
        public void RealizaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = ExecutaMovimento(origem, destino);

            if (EstaEmCheck(JogadorAtual))
            {
                DesfazMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("Você não pode se colocar em check!");
            }

            Peca p = Tabuleiro.PegaPeca(destino);

            // #jogadaespecial promocao
            if (p is Peao)
            {
                if ((p.Cor == Cor.Branca && destino.Linha == 0) || (p.Cor == Cor.Preta && destino.Linha == 7))
                {
                    p = Tabuleiro.RetirarPeca(destino);
                    _pecas.Remove(p);
                    Peca promo = EscolhePromo(Tabuleiro, p.Cor);
                    if (promo != null)
                    {
                        Tabuleiro.ColocarPeca(promo, destino);
                        _pecas.Add(promo);
                    }
                }
            }

            if (EstaEmCheck(Adversaria(JogadorAtual)))
            {
                Check = true;
            }
            else
            {
                Check = false;
            }
            if (TesteCheckMate(Adversaria(JogadorAtual)))
            {
                Terminada = true;
            }
            else
            {
                Turno++;
                MudaJogador();
            }

            // #jogadaespecial En Passant
            if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2))
            {
                VulneravelEnPassant = p;
            }
            else
            {
                VulneravelEnPassant = null;
            }
        }
示例#3
0
        public void ValidarPosicaoDeOrigem(Posicao pos)
        {
            Peca p = Tabuleiro.PegaPeca(pos);

            if (p == null)
            {
                throw new TabuleiroException("Não existe peça na posição de origem escolhida!");
            }
            if (JogadorAtual != p.Cor)
            {
                throw new TabuleiroException("A peça de origem escolhida não é sua!");
            }
            if (!p.existeMovimentosPossiveis())
            {
                throw new TabuleiroException("Não há movimentos movimentos possíveis para a peça de origem escolhida!");
            }
        }