Пример #1
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);
        }
Пример #2
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

            p.DecrementarQtdMovimentos();
            if (pecaCapturada != null)                   //teve peça capturada
            {
                Tab.ColocarPeca(pecaCapturada, destino); //vai colocar a peça capturada de volta
                Capturadas.Remove(pecaCapturada);
            }
            Tab.ColocarPeca(p, origem);

            //Roque pequeno
            if (p is Rei && destino.Coluna == origem.Coluna + 2)                       //caso o destino é 2 casas a direita
            {
                Posicao origemDaTorre  = new Posicao(origem.Linha, origem.Coluna + 3); //essa é a origem da torre
                Posicao DestinoDaTorre = new Posicao(origem.Linha, origem.Coluna + 1); //mesma linha do rei, só que a direita (que seria o mais 1)
                Peca    T = Tab.RetirarPeca(DestinoDaTorre);
                T.DecrementarQtdMovimentos();
                Tab.ColocarPeca(T, origemDaTorre);
            }

            //Roque Grande
            if (p is Rei && destino.Coluna == origem.Coluna - 2)                       //caso o destino é 2 casas a direita
            {
                Posicao origemDaTorre  = new Posicao(origem.Linha, origem.Coluna - 4); //essa é a origem da torre
                Posicao DestinoDaTorre = new Posicao(origem.Linha, origem.Coluna - 1); //mesma linha do rei, só que a direita (que seria o mais 1)
                Peca    T = Tab.RetirarPeca(DestinoDaTorre);
                T.DecrementarQtdMovimentos();
                Tab.ColocarPeca(T, origemDaTorre);
            }

            // 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);
                }
            }
        }
Пример #3
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = tab.RetirarPeca(destino);

            p.DecrementarQtdMovimentos();
            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 origemT  = new Posicao(origem.Linha, origem.Coluna + 3);
                Posicao destinoT = new Posicao(origem.Linha, origem.Coluna + 1);
                Peca    T        = tab.RetirarPeca(destinoT);
                T.DecrementarQtdMovimentos();
                tab.ColocarPeca(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.DecrementarQtdMovimentos();
                tab.ColocarPeca(T, origemT);
            }

            // # JogadaEspecial en passant
            if (p is Peca)
            {
                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);
                }
            }
        }
Пример #4
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca PecaCap)
        {
            Peca p = Tab.RetirarPeca(destino);

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

            //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.DecrementarQtdMovimentos();
                Tab.ColocarPeca(T, origemT);
            }

            //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(origemT);
                T.IncrementarQtdMovimentos();
                Tab.ColocarPeca(T, destinoT);
            }

            //Jogada EnPassant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && PecaCap == 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);
                }
            }
        }
Пример #5
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

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

            //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.DecrementarQtdMovimentos();
                Tab.ColocarPeca(T, origemT);
            }

            //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.IncrementarQtdMovimentos();
                Tab.ColocarPeca(T, origemT);
            }

            //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);
                    }
                }
            }
        }