예제 #1
0
        public Peca ExecutaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.RemovePeca(origem);

            p.IncrementarQtdMovimento();
            Peca pecaCapturada = Tab.RemovePeca(destino);

            Tab.PutPeca(p, destino);

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

            //#jogada especial 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 torreRoque = Tab.RemovePeca(origemTorre);
                torreRoque.IncrementarQtdMovimento();
                Tab.PutPeca(torreRoque, destinoTorre);
            }

            //#jogada especial 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 torreRoque = Tab.RemovePeca(origemTorre);
                torreRoque.IncrementarQtdMovimento();
                Tab.PutPeca(torreRoque, destinoTorre);
            }

            // #jogada especial en passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == null)
                {
                    Posicao posicaoPeao;
                    if (p.Cor == Cor.Branca)
                    {
                        posicaoPeao = new Posicao(destino.Linha + 1, destino.Coluna);
                    }
                    else
                    {
                        posicaoPeao = new Posicao(destino.Linha - 1, destino.Coluna);
                    }

                    pecaCapturada = Tab.RemovePeca(posicaoPeao);
                    Capturadas.Add(pecaCapturada);
                }
            }

            return(pecaCapturada);
        }
예제 #2
0
        public Peca executaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.retirarPeca(origem);

            p.incrementarQteMovimentos();
            Peca pecaCapturada = Tab.retirarPeca(destino);

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

            //# jogada especial 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(origemT);
                T.incrementarQteMovimentos();
                Tab.colocarPeca(T, destinoT);
            }

            //# 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 = Tab.retirarPeca(origemT);
                T.incrementarQteMovimentos();
                Tab.colocarPeca(T, destinoT);
            }

            //# jogada especial 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.retirarPeca(posP);
                    Capturadas.Add(pecaCapturada);
                }
            }

            return(pecaCapturada);
        }
예제 #3
0
        public Peca ExecutaMovimento(Posicao origem, Posicao destino)
        {
            Peca peca = Tabuleiro.RetirarPeca(origem);

            peca.IncrementarMovimentos();
            Peca pecaCapturada = Tabuleiro.RetirarPeca(destino);

            Tabuleiro.ColocarPeca(peca, destino);
            if (pecaCapturada != null)
            {
                Capturadas.Add(pecaCapturada);
            }

            // #jogadaespecial Roque Pequeno
            if (peca 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        = Tabuleiro.RetirarPeca(origemTorre);
                torre.IncrementarMovimentos();
                Tabuleiro.ColocarPeca(torre, destinoTorre);
            }

            // #jogadaespecial Roque Grande
            if (peca 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        = Tabuleiro.RetirarPeca(origemTorre);
                torre.IncrementarMovimentos();
                Tabuleiro.ColocarPeca(torre, destinoTorre);
            }

            // #jogadaespecial en passant
            if (peca is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == null)
                {
                    Posicao posicaoPeao;

                    if (peca.Cor == Cor.Branca)
                    {
                        posicaoPeao = new Posicao(destino.Linha + 1, destino.Coluna);
                    }
                    else
                    {
                        posicaoPeao = new Posicao(destino.Linha - 1, destino.Coluna);
                    }

                    pecaCapturada = Tabuleiro.RetirarPeca(posicaoPeao);
                    Capturadas.Add(pecaCapturada);
                }
            }

            return(pecaCapturada);
        }
예제 #4
0
        private void DesfazMovimento(Posicao origem, Posicao destino, Peca capturada)
        {
            Peca p = Tab.RemovePeca(destino);

            p.DecrementarQtdMovimento();

            if (capturada != null)
            {
                Tab.PutPeca(capturada, destino);
                Capturadas.Remove(capturada);
            }

            //#jogada especial 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 torreRoque = Tab.RemovePeca(destinoTorre);
                torreRoque.DecrementarQtdMovimento();
                Tab.PutPeca(torreRoque, origemTorre);
            }

            //#jogada especial 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 torreRoque = Tab.RemovePeca(destinoTorre);
                torreRoque.DecrementarQtdMovimento();
                Tab.PutPeca(torreRoque, origemTorre);
            }

            // #jogadaespecial en passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && capturada == VuneravelEnPassant)
                {
                    Peca    peao = Tab.RemovePeca(destino);
                    Posicao posicaoPeao;
                    if (p.Cor == Cor.Branca)
                    {
                        posicaoPeao = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posicaoPeao = new Posicao(4, destino.Coluna);
                    }

                    Tab.PutPeca(peao, posicaoPeao);
                }
            }

            Tab.PutPeca(p, origem);
        }
예제 #5
0
        public Peca ExecutaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.retirarPeca(origem);

            p.IncrementMoviment();
            Peca pecaCapturada = Tab.retirarPeca(destino);

            Tab.ColocarPeca(p, destino);

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

            //#JogadaEspecial Roque Pequeno
            if (p is King && 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.retirarPeca(origemTorre);
                torre.IncrementMoviment();
                Tab.ColocarPeca(torre, destinoTorre);
            }

            //#JogadaEspecial Roque Grande
            if (p is King && 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.retirarPeca(origemTorre);
                torre.IncrementMoviment();
                Tab.ColocarPeca(torre, destinoTorre);
            }

            //#JogadaEspecial EnPassant
            if (p is Pawn)
            {
                if (origem.Coluna != p.Position.Coluna && pecaCapturada == null)
                {
                    Posicao posP;
                    if (p.Color == Cor.White)
                    {
                        posP = new Posicao(destino.Linha + 1, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(destino.Linha - 1, destino.Coluna);
                    }
                    pecaCapturada = Tab.retirarPeca(posP);
                    Capturadas.Add(pecaCapturada);
                }
            }

            return(pecaCapturada);
        }
예제 #6
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca peca = Tabuleiro.RetirarPeca(destino);

            peca.DecrementarMovimentos();
            if (pecaCapturada != null)
            {
                Tabuleiro.ColocarPeca(pecaCapturada, destino);
                Capturadas.Remove(pecaCapturada);
            }

            Tabuleiro.ColocarPeca(peca, origem);

            // #jogadaespecial Roque Pequeno
            if (peca 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        = Tabuleiro.RetirarPeca(destinoTorre);
                torre.IncrementarMovimentos();
                Tabuleiro.ColocarPeca(torre, origemTorre);
            }

            // #jogadaespecial Roque Grande
            if (peca 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        = Tabuleiro.RetirarPeca(destinoTorre);
                torre.IncrementarMovimentos();
                Tabuleiro.ColocarPeca(torre, origemTorre);
            }

            // #jogadaespecial en passant
            if (peca is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == VulneravelEnPassant)
                {
                    Peca    peao = Tabuleiro.RetirarPeca(destino);
                    Posicao posicaoPeao;

                    if (peca.Cor == Cor.Branca)
                    {
                        posicaoPeao = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posicaoPeao = new Posicao(4, destino.Coluna);
                    }

                    Tabuleiro.ColocarPeca(peao, posicaoPeao);
                }
            }
        }
예제 #7
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);

            //# jogada especial 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.colocarPeca(T, origemT);
            }

            //# 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 = Tab.retirarPeca(destinoT);
                T.decrementarQteMovimentos();
                Tab.colocarPeca(T, origemT);
            }

            //# jogada especial en passant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == VulneravelEnPassant)
                {
                    Peca    peao = Tab.retirarPeca(destino);
                    Posicao posP;
                    if (peao.Cor == Cor.Branca)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }
                    Tab.colocarPeca(peao, posP);
                }
            }
        }
예제 #8
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.RetirarPeca(destino);

            p.DecrementarQteMovimento();
            if (pecaCapturada != null)
            {
                Tab.ColocarPeca(pecaCapturada, destino);
                Capturadas.Remove(pecaCapturada);
            }
            Tab.ColocarPeca(p, origem);
        }
예제 #9
0
        private 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);

            // #jogada especial roque
            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);
            }

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

            // enpassant
            if (p is Peao)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == VulveravelEnPassant)
                {
                    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);
                }
            }
        }
예제 #10
0
        public void DesfazMovimento(Posicao origem, Posicao destino, Peca pecaCapturada)
        {
            Peca p = Tab.retirarPeca(destino);

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

            //#JogadaEspecial Roque Pequeno
            if (p is King && 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.PegaPeca(destinotorre);
                torre.DecrementMoviment();
                Tab.ColocarPeca(torre, origemTorre);
            }

            //#JogadaEspecial Roque Grande
            if (p is King && 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.PegaPeca(destinotorre);
                torre.DecrementMoviment();
                Tab.ColocarPeca(torre, origemTorre);
            }

            //#JogadaEspecial EnPassant
            if (p is Pawn)
            {
                if (origem.Coluna != destino.Coluna && pecaCapturada == VuneravelEnPassant)
                {
                    Peca    peao = Tab.retirarPeca(destino);
                    Posicao posP;
                    if (p.Color == Cor.White)
                    {
                        posP = new Posicao(3, destino.Coluna);
                    }
                    else
                    {
                        posP = new Posicao(4, destino.Coluna);
                    }
                    Tab.ColocarPeca(peao, posP);
                }
            }
        }
        public Peca ExecutaMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.RetiraPeca(origem);

            p.IncrementarQuantMovimentos();
            Peca PecaCapturada = Tab.RetiraPeca(destino);

            Tab.ColocarPeca(p, destino);
            if (PecaCapturada != null)
            {
                Capturadas.Add(PecaCapturada);
            }
            // #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.RetiraPeca(origemT);
                T.IncrementarQuantMovimentos();
                Tab.ColocarPeca(T, destinoT);
            }
            // #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.RetiraPeca(origemT);
                T.IncrementarQuantMovimentos();
                Tab.ColocarPeca(T, destinoT);
            }
            // #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.RetiraPeca(posP);
                    Capturadas.Add(PecaCapturada);
                }
            }

            return(PecaCapturada);
        }
예제 #12
0
        public Peca ExecutarMovimento(Posicao origem, Posicao destino)
        {
            Peca p = Tab.RetirarPeca(origem);

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

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