Beispiel #1
0
        public Peca ExecutaMovimento(Posicao inicio, Posicao destino)
        {
            Peca p = Tab.RetirarPeca(inicio);

            p.IncrementarQntMovimentos();
            Peca pecaCapturada = Tab.RetirarPeca(destino);

            Tab.ColocarPeca(p, destino);
            if (pecaCapturada != null)
            {
                PecasCapturadas.Add(pecaCapturada);
            }

            // #Jogada Especial: Roque pequeno

            if (p is Rei && destino.Coluna == inicio.Coluna + 2)
            {
                Posicao origemTorre  = new Posicao(inicio.Linha, inicio.Coluna + 3);
                Posicao destinoTorre = new Posicao(inicio.Linha, inicio.Coluna + 1);

                Peca T = Tab.RetirarPeca(origemTorre);
                T.IncrementarQntMovimentos();
                Tab.ColocarPeca(T, destinoTorre);
            }
            // #Jogada Especial: Roque grande

            if (p is Rei && destino.Coluna == inicio.Coluna - 2)
            {
                Posicao origemTorre  = new Posicao(inicio.Linha, inicio.Coluna - 4);
                Posicao destinoTorre = new Posicao(inicio.Linha, inicio.Coluna - 1);

                Peca T = Tab.RetirarPeca(origemTorre);
                T.IncrementarQntMovimentos();
                Tab.ColocarPeca(T, destinoTorre);
            }

            // #Jogada Especial: En Passant

            if (p is Peao)
            {
                if (inicio.Coluna != destino.Coluna && pecaCapturada == null)
                {
                    Posicao posP;
                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(destino.Linha + 1, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(destino.Linha - 1, destino.Coluna);
                    }
                    pecaCapturada = Tab.RetirarPeca(posP);
                    PecasCapturadas.Add(pecaCapturada);
                }
            }


            return(pecaCapturada);
        }
Beispiel #2
0
        public Peca ExecutaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.RemoverPeca(origem);

            p.IncrementarQntMovimentos();

            Peca pecaCapturada = Tab.RemoverPeca(destino);

            Tab.AdicionarPeca(p, destino);

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

            // #JogadaEspecial Roque pequeno
            if (p is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao origemTorre  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna + 1);

                Peca torre = Tab.RemoverPeca(origemTorre);
                Tab.AdicionarPeca(torre, destinoTorre);
            }

            // #JogadaEspecial Roque grande
            if (p is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao origemTorre  = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao destinoTorre = new Posicao(origem.Linha, origem.Coluna - 1);

                Peca torre = Tab.RemoverPeca(origemTorre);
                Tab.AdicionarPeca(torre, destinoTorre);
            }

            // #jogadaespecial en passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == null)
                {
                    Posicao posP;
                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(destino.Linha + 1, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(destino.Linha - 1, destino.Coluna);
                    }
                    pecaCapturada = Tab.RemoverPeca(posP);
                    _capturadas.Add(pecaCapturada);
                }
            }

            return(pecaCapturada);
        }
Beispiel #3
0
        public Peca ExecutaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.RetirarPeca(origem);

            p.IncrementarQntMovimentos();
            Peca PecaCapturada = Tab.RetirarPeca(destino);

            Tab.ColocarPeca(p, destino);
            if (PecaCapturada != null)
            {
                Capturadas.Add(PecaCapturada);
            }
            return(PecaCapturada);
        }