Example #1
0
        public void Promocao(Peca peca)
        {
            Posicao posicao = peca.Posicao;

            Tabuleiro.RemoverPeca(posicao);
            _pecasNaPartida.Remove(peca);
            Peca dama = new Dama(peca.Cor, Tabuleiro);

            Tabuleiro.ColocarPeca(dama, posicao);
            _pecasNaPartida.Add(dama);
        }
Example #2
0
        private void DesfazerMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca peca = Tabuleiro.RemoverPeca(destino);

            peca.DecrementarQtdMovimentos();
            if (pecaCapturada != null)
            {
                Tabuleiro.ColocarPeca(pecaCapturada, destino);
                _pecasCapturadas.Remove(pecaCapturada);
            }
            Tabuleiro.ColocarPeca(peca, origem);
        }
Example #3
0
        private Peca ExecutarMovimento(Posicao origem, Posicao destino)
        {
            Peca peca = Tabuleiro.RemoverPeca(origem);

            peca.IncrementarQtdMovimentos();
            Peca pecaCapturada = Tabuleiro.RemoverPeca(destino);

            Tabuleiro.ColocarPeca(peca, destino);

            if (pecaCapturada != null)
            {
                _pecasCapturadas.Add(pecaCapturada);
            }

            return(pecaCapturada);
        }
Example #4
0
        public void NovaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = ExecutarMovimento(origem, destino);

            if (EstaEmXeque())
            {
                DesfazerMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("UM JOGADOR NÃO PODE SE COLOCAR EM XEQUE!");
            }
            Peca peca = Tabuleiro.ObterPeca(destino);

            //Teste Jogada Especial "Promoção" (trocar peão por dama se chegar ao outro lado do tabuleiro)
            if (peca is Peao)
            {
                if ((peca.Cor == Cor.Azul && destino.Linha == 7) || (peca.Cor == Cor.Vermelho && destino.Linha == 0))
                {
                    peca = Tabuleiro.RemoverPeca(destino);
                    _pecasNaPartida.Remove(peca);
                    Peca dama = new Dama(peca.Cor, Tabuleiro);
                    Tabuleiro.ColocarPeca(dama, destino);
                    _pecasNaPartida.Add(dama);
                    Tela.JogadaEspecialPromocao();
                }
            }

            AlteraJogador();

            if (EstaXequeMate())
            {
                Terminada = true;
            }
            else
            {
                IncrementaTurno();
            }
        }