Example #1
0
        public void DesfazMovimento(Posicao inicio, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

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

            // #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(destinoTorre);
                T.DecrementarQntMovimentos();
                Tab.ColocarPeca(T, origemTorre);
            }

            // #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(destinoTorre);
                T.DecrementarQntMovimentos();
                Tab.ColocarPeca(T, origemTorre);
            }

            // #Jogada Especial: En passant

            if (p is Peao)
            {
                if (inicio.Coluna != destino.Coluna && pecaCapturada == PecaVulneravelEnPassant)
                {
                    Peca    peao = Tab.RetirarPeca(destino);
                    Posicao posP;
                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }

                    Tab.ColocarPeca(peao, posP);
                }
            }
        }
Example #2
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.RemoverPeca(destino);

            p.DecrementarQntMovimentos();

            if (pecaCapturada != null)
            {
                Tab.AdicionarPeca(pecaCapturada, destino);
                _capturadas.Remove(pecaCapturada);
            }
            Tab.AdicionarPeca(p, origem);

            // #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(destinoTorre);
                torre.DecrementarQntMovimentos();
                Tab.AdicionarPeca(torre, origemTorre);
            }

            // #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(destinoTorre);
                torre.DecrementarQntMovimentos();
                Tab.AdicionarPeca(torre, origemTorre);
            }

            // #JogadaEspecial En Passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == VuneravelEnPassant)
                {
                    Peca    peao = Tab.RemoverPeca(destino);
                    Posicao posP;
                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }
                    Tab.AdicionarPeca(peao, posP);
                }
            }
        }
Example #3
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

            p.DecrementarQntMovimentos();
            if (pecaCapturada != null)
            {
                Tab.ColocarPeca(pecaCapturada, destino);
                Capturadas.Remove(pecaCapturada);
            }
            Tab.ColocarPeca(p, origem);
        }