Ejemplo n.º 1
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

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


            Tab.ColocarPeca(p, origem);

            //#jogadaespecial roque pequeno
            if (p is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao oriTorre = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao DesTorre = new Posicao(origem.Linha, origem.Coluna - 1);

                Peca T = Tab.RetirarPeca(DesTorre);
                T.DecrementarQteMovimentos();
                Tab.ColocarPeca(T, oriTorre);
            }

            //#jogadaespecial roque grande
            if (p is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao oriTorre = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao DesTorre = new Posicao(origem.Linha, origem.Coluna + 1);

                Peca T = Tab.RetirarPeca(DesTorre);
                T.DecrementarQteMovimentos();
                Tab.ColocarPeca(T, oriTorre);
            }

            //#jogadaespecial en passant

            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == VulneravelEnPassant)
                {
                    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);
                }
            }
        }
Ejemplo n.º 2
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca PecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

            p.DecrementarQteMovimentos();
            if (PecaCapturada != null)
            {
                Tab.ColocarPecas(PecaCapturada, destino);
                PecasCapturadas.Remove(PecaCapturada);
            }
            Tab.ColocarPecas(p, origem);
        }
Ejemplo n.º 3
0
        ///////////////////////////////////////////////////////////////////////////////////////

        public void DesfazMovimento(Posicao origem, Posicao destino, Peca PecaCapturada)
        {
            Peca p = tab.RetirarPeca(destino); // retirando uma peca da posição destino

            p.DecrementarQteMovimentos();      // decrementando quantidade de movimentos
            if (PecaCapturada != null)         // teve uma peça capturada
            {
                tab.ColocarPeca(PecaCapturada, destino);
                capturadas.Remove(PecaCapturada);
            }
            tab.ColocarPeca(p, origem);

            if (p is Rei && destino.coluna == origem.coluna + 2)
            {
                //Origem da torre
                Posicao origemT  = new Posicao(origem.linha, origem.coluna + 3);
                Posicao destinoT = new Posicao(origem.linha, origem.coluna + 1); //O destino vai ser o lugar onde o Rei esta
                Peca    T        = tab.RetirarPeca(destinoT);                    //retiro a peca
                T.DecrementarQteMovimentos();                                    //Incremento jogada
                tab.ColocarPeca(T, origemT);                                     // Coloco a torre no luga
            }


            if (p is Rei && destino.coluna == origem.coluna - 2)
            {
                //Origem da torre
                Posicao origemT  = new Posicao(origem.linha, origem.coluna - 4);
                Posicao destinoT = new Posicao(origem.linha, origem.coluna - 1); //O destino vai ser o lugar onde o Rei esta
                Peca    T        = tab.RetirarPeca(destinoT);                    //retiro a peca
                T.DecrementarQteMovimentos();                                    //Incremento jogada
                tab.ColocarPeca(T, origemT);                                     // Coloco a torre no luga
            }

            //Jpgada E Passant
            if (p is Peao)
            {
                if (origem.coluna != destino.coluna && PecaCapturada == VulneravelInPassant)
                {
                    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);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca PecaCapturada)
        {
            Peca p = Tabuleiro.RetirarPeca(destino);

            p.DecrementarQteMovimentos();
            if (PecaCapturada != null)
            {
                Tabuleiro.ColocarPeca(PecaCapturada, destino);
                Capturadas.Remove(PecaCapturada);
            }
            Tabuleiro.ColocarPeca(p, origem);

            if (p is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao OrigemT  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao DestinoT = new Posicao(origem.Linha, origem.Coluna + 1);
                Peca    T        = Tabuleiro.RetirarPeca(DestinoT);
                T.DecrementarQteMovimentos();
                Tabuleiro.ColocarPeca(T, OrigemT);
            }

            //desfazendo #jogada especial roque grande
            if (p is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao OrigemT  = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao DestinoT = new Posicao(origem.Linha, origem.Coluna - 1);
                Peca    T        = Tabuleiro.RetirarPeca(DestinoT);
                T.DecrementarQteMovimentos();
                Tabuleiro.ColocarPeca(T, OrigemT);
            }


            //desfazendo #jogada especial en passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && PecaCapturada == null)
                {
                    Peca    peao = Tabuleiro.RetirarPeca(destino);
                    Posicao posP;
                    if (p.Cor == Cor.Branca)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }
                    Tabuleiro.ColocarPeca(peao, posP);
                }
            }
        }
Ejemplo n.º 5
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca PecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

            p.DecrementarQteMovimentos();
            if (PecaCapturada != null)
            {
                Tab.ColocarPecas(PecaCapturada, destino);
                PecasCapturadas.Remove(PecaCapturada);
            }
            Tab.ColocarPecas(p, origem);

            //#JogadaEspecial Roque Pequeno
            if (p is Rei && destino.Coluna == origem.Coluna + 2)
            {
                Posicao OrigemT  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao DestinoT = new Posicao(origem.Linha, origem.Coluna + 1);
                Peca    T        = Tab.RetirarPeca(DestinoT);
                T.DecrementarQteMovimentos();
                Tab.ColocarPecas(T, OrigemT);
            }

            //#JogadaEspecial Roque Grande
            if (p is Rei && destino.Coluna == origem.Coluna - 2)
            {
                Posicao OrigemT  = new Posicao(origem.Linha, origem.Coluna - 4);
                Posicao DestinoT = new Posicao(origem.Linha, origem.Coluna - 1);
                Peca    T        = Tab.RetirarPeca(DestinoT);
                T.DecrementarQteMovimentos();
                Tab.ColocarPecas(T, OrigemT);
            }

            // #JogadaEspecial EnPassant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && PecaCapturada == VulneravelEnPassant)
                {
                    Peca    peao = Tab.RetirarPeca(destino);
                    Posicao posP;
                    if (p.Cor == Cor.Branco)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }
                    Tab.ColocarPecas(peao, posP);
                }
            }
        }