Esempio n. 1
0
        public void RealizaJogada(Posicao origem, Posicao destino)
        {
            Peca pCapturada = ExecutaMovimeto(origem, destino);

            Peca p = t.Peca(destino);

            // #Jogada Especial Promoção

            if (p is Peao)
            {
                if ((p.Cor == Cor.Branca && destino.Linha == 0) || (p.Cor == Cor.Preta && destino.Linha == 7))
                {
                    p = t.RemovePeca(destino);
                    Pecas.Remove(p);
                    Peca rainha = new Rainha(t, p.Cor);
                    t.AddPeca(rainha, destino);
                    Pecas.Add(rainha);
                }
            }

            if (EstaEmCheque(JogadorAtual))
            {
                DesfazerMovimento(origem, destino, pCapturada);
                throw new TabuleiroException("Você não pode se colocar em xeque!");
            }

            if (EstaEmCheque(Adversaria(JogadorAtual)))
            {
                Xeque = true;
            }
            else
            {
                Xeque = false;
            }

            if (TesteXequeMate(Adversaria(JogadorAtual)))
            {
                Terminada = true;
            }
            else
            {
                turno++;
                MudaJogador();
            }

            // #Jogada Especial En Passant

            if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2))
            {
                VulneravelEnPassant = p;
            }
            else
            {
                VulneravelEnPassant = null;
            }
        }
Esempio n. 2
0
        public void RealizaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = ExecutaMovimento(origem, destino);

            if (EstaEmXeque(JogadorAtual))
            {
                DesfazMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("Você nao pode se colocar em Xeque!");
            }

            Peca p = tab.peca(destino);

            //#Combo Promocao de Peao
            if (p is Peao)
            {
                if (p.cor == Cor.Branca && destino.Linha == 0 || p.cor == Cor.Preta && destino.Linha == 7)
                {
                    p = tab.RetiraPeca(destino);
                    pecas.Remove(p);
                    Peca rainha = new Rainha(tab, p.cor);
                    tab.ColocarPeca(rainha, destino);
                    pecas.Add(rainha);
                }
            }

            if (EstaEmXeque(Adversaria(JogadorAtual)))
            {
                Xeque = true;
            }
            else
            {
                Xeque = false;
            }

            if (TesteXequeMate(Adversaria(JogadorAtual)))
            {
                Terminada = true;
            }
            else
            {
                Turno++;
                MudaJogador();
            }



            //#Combo En Passant
            if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2))
            {
                vulneravelEnPassant = p;
            }
            else
            {
                vulneravelEnPassant = null;
            }
        }
Esempio n. 3
0
        public void RealizaJogada(Posicao origem, Posicao destino)
        {
            Peca PecaCap = ExecutarMovimento(origem, destino);

            if (EstaEmXeque(JogadorAtual))
            {
                DesfazMovimento(origem, destino, PecaCap);
                throw new TabuleiroException("Você esta em xeque");
            }
            Peca p = Tab.Peca(destino);

            //Promoção

            if (p is Peao)
            {
                if ((p.Cor == Cor.branca && destino.Linha == 0) || (p.Cor == Cor.preto && destino.Linha == 7))
                {
                    p = Tab.RetirarPeca(destino);
                    pecas.Remove(p);
                    Peca Rainha = new Rainha(Tab, p.Cor);
                    Tab.ColocarPeca(Rainha, destino);
                    pecas.Add(Rainha);
                }
            }

            if (EstaEmXeque(Adversaria(JogadorAtual)))
            {
                Xeque = true;
            }
            else
            {
                Xeque = false;
            }
            if (TesteXequeMate(Adversaria(JogadorAtual)))
            {
                Terminada = true;
            }
            else
            {
                Turno++;
                MudaJogador();
            }

            Peca p = Tab.Peca(destino);

            //Jogada EnPassant
            if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2))
            {
                VulneravelEnPassant = p;
            }
            else
            {
                VulneravelEnPassant = null;
            }
        }
Esempio n. 4
0
        public void RealizaJogada(Posicao origem, Posicao destino)
        {
            Peca capturada = ExecutaMovimento(origem, destino);

            if (EstaEmCheque(JogadorAtual))
            {
                DesfazMovimento(origem, destino, capturada);
                throw new TabuleiroException($"Você não pode se por em cheque!!!");
            }

            Peca p = Tab.GetPeca(destino);

            //#jogadaespcial promocao
            if (p is Peao)
            {
                if ((p.Cor == Cor.Branca && destino.Linha == 0) || (p.Cor == Cor.Preta && destino.Linha == 7))
                {
                    p = Tab.RemovePeca(destino);
                    Pecas.Remove(p);
                    Peca rainha = new Rainha(p.Cor, Tab);
                    Tab.PutPeca(rainha, destino);
                    Pecas.Add(rainha);
                }
            }

            if (EstaEmCheque(Adversario(JogadorAtual)))
            {
                Xeque = true;
            }
            else
            {
                Xeque = false;
            }

            if (TesteXequemate(Adversario(JogadorAtual)))
            {
                Terminada = true;
            }
            else
            {
                Turno++;
                MudaJogador();
            }

            // #jogadaespecial en passant
            if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2))
            {
                VuneravelEnPassant = p;
            }
            else
            {
                VuneravelEnPassant = null;
            }
        }
Esempio n. 5
0
        public void RealizaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = ExecutaMovimento(origem, destino);

            if (estaEmCheque(jogadorAtual))
            {
                desfazMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("Voce nao pode se colocar em cheque!");
            }

            Peca p = tab.peca(destino);

            //#jogadaespecial promocao
            if (p is Peao)
            {
                if ((p.Cor == Cor.Branca && destino.Linha == 0) || p.Cor == Cor.Preta && destino.Linha == 7)
                {
                    p = tab.retirarPeca(destino);
                    pecas.Remove(p);
                    Peca dama = new Rainha(p.Cor, tab);
                    tab.colocarPeca(dama, destino);
                    pecas.Add(dama);
                }
            }
            if (estaEmCheque(adversaria(jogadorAtual)))
            {
                xeque = true;
            }
            else
            {
                xeque = false;
            }

            if (estaEmChequeMate(adversaria(jogadorAtual)))
            {
                partidaTerminada = 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;
            }
        }
Esempio n. 6
0
        public void realizaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = executaMovimento(origem, destino);

            if (estaEmXeque(jogadorAtual))
            {
                desfazMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("Você não pode se colocar em xeque!");
            }
            Peca p = tab.peca(destino);

            // #jogadaEspecial promocao
            if (p is Peao)
            {
                if ((p.cor == Cor.Branca && destino.linha == 0) || (p.cor == Cor.Preta && destino.linha == 7))
                {
                    p = tab.retirarPeca(destino);
                    pecas.Remove(p);
                    Peca dama = new Rainha(tab, p.cor);
                    tab.colocarPeca(dama, destino);
                    pecas.Add(dama);
                }
            }
            if (estaEmXeque(adversaria(jogadorAtual)))
            {
                xeque = true;
            }
            else
            {
                xeque = false;
            }
            if (testeXequemate(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;
            }
        }
        public void realizaJogada(Posicao posOrigem, Posicao posDestino)
        {
            Peca capturda = executarMovimento(posOrigem, posDestino);

            if (estaEmXeque(jogadorAtual))
            {
                desfazMovimento(posOrigem, posDestino, capturda);
                throw new TabuleiroException("Você não se pode colocar em cheque!");
            }

            Peca p = this.tabuleiro.getPeca(posDestino);

            // #jogadaespecial promocao
            if (p is Peao)
            {
                if ((p.cor == Cor.Vermelha && posDestino.linha == 0) || (p.cor == Cor.Preta && posDestino.linha == 7))
                {
                    p = tabuleiro.removePeca(posDestino);
                    pecas.Remove(p);
                    //usuario poderia escolher qualquer peça...mas vai ficar só sendo rainha
                    Peca dama = new Rainha(tabuleiro, p.cor);
                    tabuleiro.addPeca(dama, posDestino);
                    pecas.Add(dama);
                }
            }

            this.xeque = estaEmXeque(corAdversaria(jogadorAtual));

            if (estaEmXequeMate(corAdversaria(jogadorAtual)))
            {
                this.terminada = true;
            }
            else
            {
                turno++;
                mudaJogador();
            }

            if (p is Peao && (posDestino.linha == posOrigem.linha - 2 || posDestino.linha == posOrigem.linha + 2))
            {
                vulneravelEnPassant = p;
            }
            else
            {
                vulneravelEnPassant = null;
            }
        }