Esempio n. 1
0
        public static void imprimirTabuleiro(Tabuleiro tab, bool[,] posicoesPossiveis)
        {
            ConsoleColor fundoOriginal = Console.BackgroundColor;
            ConsoleColor fundoAlterado = ConsoleColor.DarkGray;


            for (int i = 0; i < tab.Linhas; i++)
            {
                Console.Write(8 - i + " ");
                for (int j = 0; j < tab.Colunas; j++)
                {
                    if (posicoesPossiveis[i, j])
                    {
                        Console.BackgroundColor = fundoAlterado;
                    }
                    else
                    {
                        Console.BackgroundColor = fundoOriginal;
                    }
                    imprimePeca(tab.peca(i, j));
                    Console.BackgroundColor = fundoOriginal;
                }
                Console.WriteLine();
            }
            Console.WriteLine("  A B C D E F G H");
            Console.BackgroundColor = fundoOriginal;
        }
Esempio n. 2
0
        public static void imprimirTabu(Tabuleiro t, bool[,] possiveispos)
        {
            ConsoleColor fundoOriginal = Console.BackgroundColor;
            ConsoleColor fundoAlter    = ConsoleColor.DarkGray;

            for (int i = 0; i < t.linhas; i++)
            {
                Console.Write(t.linhas - i + " ");
                for (int j = 0; j < t.colunas; j++)
                {
                    if (possiveispos[i, j])
                    {
                        Console.BackgroundColor = fundoAlter;
                    }
                    else
                    {
                        Console.BackgroundColor = fundoOriginal;
                    }
                    imprimePeca(t.peca(i, j));
                    Console.BackgroundColor = fundoOriginal;
                }
                Console.WriteLine();
            }
            Console.WriteLine("  a b c d e f g h ");
            Console.BackgroundColor = fundoOriginal;
        }
Esempio n. 3
0
        public static void imprimirTabuleiro(Tabuleiro tab, bool[,] posicoesPossiveis)
        {
            ConsoleColor fundoOriginal = Console.BackgroundColor;
            ConsoleColor fundoAlterado = ConsoleColor.DarkGray;

            for (int i = 0; i < tab.linhas; i++)
            {
                ConsoleColor back = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write(8 - i + " ");
                Console.ForegroundColor = back;
                for (int j = 0; j < tab.colunas; j++)
                {
                    if (posicoesPossiveis[i, j])
                    {
                        Console.BackgroundColor = fundoAlterado;
                    }
                    else
                    {
                        Console.BackgroundColor = fundoOriginal;
                    }
                    imprimirPeca(tab.peca(i, j));
                    Console.BackgroundColor = fundoOriginal;
                }
                Console.WriteLine();
            }
            ConsoleColor aux = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("  a b c d e f g h ");
            Console.ForegroundColor = aux;
            Console.BackgroundColor = fundoOriginal;
        }
Esempio n. 4
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] matriz = new bool[Tabuleiro.Linha, Tabuleiro.Coluna];

            Posicao pos = new Posicao(0, 0);

            //no
            pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1);
            while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.DefinirValores(pos.Linha + 1, pos.Coluna - 1);
            }

            //so
            pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1);
            while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.DefinirValores(pos.Linha - 1, pos.Coluna - 1);
            }

            //ne
            pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1);
            while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.DefinirValores(pos.Linha + 1, pos.Coluna + 1);
            }

            //se
            pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1);
            while (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.DefinirValores(pos.Linha - 1, pos.Coluna + 1);
            }



            return(matriz);
        }
Esempio n. 5
0
        public void RealizaJogada(Posicao origem, Posicao destino)
        {
            Peca PecaCapturada = executaMovimento(origem, destino);

            if (EstaEmCheque(JogadorAtual))
            {
                DesfazMovimento(origem, destino, PecaCapturada);
                throw new TabuleiroException("Você não pode se colocar em xeque!");
            }

            Peca p = Tabuleiro.peca(destino);

            //#jogada especial promocao
            if (p is Peao)
            {
                if ((p.Cor == Cor.Branca && destino.Linha == 0) || (p.Cor == Cor.Preta && destino.Linha == 7))
                {
                    p = Tabuleiro.RetirarPeca(destino);
                    Pecas.Remove(p);
                    Peca dama = new Dama(Tabuleiro, p.Cor);
                    Tabuleiro.ColocarPeca(dama, destino);
                    Pecas.Add(dama);
                }
            }

            if (EstaEmCheque(Adversaria(JogadorAtual)))
            {
                Xeque = true;
            }
            else
            {
                Xeque = false;
            }

            if (TestaXequeMate(Adversaria(JogadorAtual)))
            {
                Terminada = true;
            }
            else
            {
                Turno++;
                MudaJogador();
            }


            //#jogada especial en passant

            if (p is Peao && (destino.Linha == origem.Linha - 2) || destino.Linha == origem.Linha + 2)
            {
                VulneravelEnPassant = p;
            }
            else
            {
                VulneravelEnPassant = null;
            }
        }
Esempio n. 6
0
        public void realizaJogada(Posicao origem, Posicao destino)
        {
            Peca pecaCapturada = executaMovimento(origem, destino);

            if (estaEmXeque(JogadorAtual))
            {
                desfazMovimento(origem, destino, pecaCapturada);
                throw new TabuleiroException("Você não pode ser por em Xeque!");
            }

            Peca p = Tabuleiro.peca(destino);

            // #JogadaEspecial Promoção
            if (p is Peao)
            {
                if (p.Cor == Cor.Branca && destino.Linha == 0 || p.Cor == Cor.Preta && destino.Linha == 7)
                {
                    p = Tabuleiro.retirarPeca(destino);
                    Pecas.Remove(p);
                    Peca dama = new Dama(Tabuleiro, p.Cor);
                    Tabuleiro.colocarPeca(dama, destino);
                    Pecas.Add(dama);
                }
            }

            if (estaEmXeque(adversaria(JogadorAtual)))
            {
                Xeque = true;
            }
            else
            {
                Xeque = false;
            }
            if (testeXequeMate(adversaria(JogadorAtual)))
            {
                Terminada = true;
            }
            else
            {
                Turno++;
                mudaJogador();
            }


            // #Jogadaespecial en passant
            if (p is Peao && (destino.Linha == origem.Linha - 2 || destino.Linha == origem.Linha + 2))
            {
                VulneravelEnPassant = p;
            }
            else
            {
                VulneravelEnPassant = null;
            }
        }
Esempio n. 7
0
 public static void mostrarTabuleiro(Tabuleiro tabuleiro)
 {
     for (int i = 0; i < tabuleiro.linhas; i++)
     {
         Console.Write(8 - i + " ");
         for (int j = 0; j < tabuleiro.colunas; j++)
         {
             if (tabuleiro.peca(i, j) != null)
             {
                 imprimir(tabuleiro.peca(i, j));
                 Console.Write(" ");
             }
             else
             {
                 Console.Write("- ");
             }
         }
         Console.WriteLine();
     }
     Console.WriteLine("  a b c d e f g h");
 }
Esempio n. 8
0
 public static void imprimirTabuleiro(Tabuleiro tab)
 {
     for (int i = 0; i < tab.Linhas; i++)
     {
         Console.Write(8 - i + " ");
         for (int j = 0; j < tab.Colunas; j++)
         {
             imprimePeca(tab.peca(i, j));
         }
         Console.WriteLine();
     }
     Console.WriteLine("  A B C D E F G H");
 }
Esempio n. 9
0
File: Tela.cs Progetto: ederp/Xadrez
 public static void imprimirTabuleiro(Tabuleiro tab)
 {
     for (int i = 0; i < tab.linhas; i++)
     {
         Console.Write(8 - i + " ");
         for (int j = 0; j < tab.colunas; j++)
         {
             imprimirPeca(tab.peca(i, j));
         }
         Console.WriteLine();
     }
     Console.WriteLine("  a b c d e f g h");
 }
Esempio n. 10
0
 public static void ImprimirTabuleiro(Tabuleiro tab) // Estático para não ser instanciado.
 {
     for (int i = 0; i < tab.linhas; i++)
     {
         Console.Write(8 - i + " ");
         for (int j = 0; j < tab.colunas; j++)
         {
             imprimirPeca(tab.peca(i, j));
         }
         Console.WriteLine();
     }
     Console.WriteLine("  a b c d e f g h");
 }
Esempio n. 11
0
 public static void imrpimirTabuleiro(Tabuleiro tab)
 {
     for (int i = 0; i < tab.linhas; i++)
     {
         Console.Write($"{8 - i} ");
         for (int j = 0; j < tab.colunas; j++)
         {
             ImprimirPeca(tab.peca(i, j));
         }
         Console.WriteLine();
     }
     Console.WriteLine("  A B C D E F G H");
 }
        public override bool[,] movimentosPossiveis()
        {
            bool[,] mat = new bool[Tabuleiro.Linhas, Tabuleiro.Colunas];
            Posicao pos = new Posicao(0, 0);

            //acima
            pos.definirValores(Posicao.Linha - 1, Posicao.Coluna);
            while (Tabuleiro.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.Linha = pos.Linha - 1;
            }
            //abaixo
            pos.definirValores(Posicao.Linha + 1, Posicao.Coluna);
            while (Tabuleiro.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.Linha = pos.Linha + 1;
            }
            //direita
            pos.definirValores(Posicao.Linha, Posicao.Coluna + 1);
            while (Tabuleiro.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.Coluna = pos.Coluna + 1;
            }
            //esquerda
            pos.definirValores(Posicao.Linha, Posicao.Coluna - 1);
            while (Tabuleiro.posicaoValida(pos) && podeMover(pos))
            {
                mat[pos.Linha, pos.Coluna] = true;
                if (Tabuleiro.peca(pos) != null && Tabuleiro.peca(pos).Cor != Cor)
                {
                    break;
                }
                pos.Coluna = pos.Coluna - 1;
            }
            return(mat);
        }
Esempio n. 13
0
 public static void imprimirTabuleiro(Tabuleiro tab)
 {
     //print a matrix (chessboard) on the screen
     for (int i = 0; i < tab.linhas; i++)
     {
         Console.Write(8 - i + " ");
         for (int j = 0; j < tab.colunas; j++)
         {
             imprimirPeca(tab.peca(i, j));
         }
         Console.WriteLine();
     }
     Console.WriteLine("  a b c d e f g h");
 }
Esempio n. 14
0
 public void validarPosicaoDeOrigem(Posicao pos)
 {
     if (Tabuleiro.peca(pos) == null)
     {
         throw new TabuleiroException("Não existe peça na posição de origem escolhida!");
     }
     if (JogadorAtual != Tabuleiro.peca(pos).Cor)
     {
         throw new TabuleiroException("A peça de origem escolhida não é sua!");
     }
     if (!Tabuleiro.peca(pos).existeMovimentosPossiveis())
     {
         throw new TabuleiroException("Não há movimentos possíveis para a peça de origem escolhida!");
     }
 }
Esempio n. 15
0
File: Tela.cs Progetto: ederp/Xadrez
        public static void imprimirTabuleiro(Tabuleiro tab, bool[,] posicoesPossiveis)
        {
            ConsoleColor fundoOriginal = Console.BackgroundColor;
            ConsoleColor fundoAlterado = ConsoleColor.DarkGray;

            for (int i = 0; i < tab.linhas; i++)
            {
                Console.Write(8 - i + " ");
                for (int j = 0; j < tab.colunas; j++)
                {
                    Console.BackgroundColor = (posicoesPossiveis[i, j]) ? fundoAlterado : fundoOriginal;
                    imprimirPeca(tab.peca(i, j));
                    Console.BackgroundColor = fundoOriginal;
                }
                Console.WriteLine();
            }
            Console.WriteLine("  a b c d e f g h");
            Console.BackgroundColor = fundoOriginal;
        }
Esempio n. 16
0
        public static void imprimirTabuleiro(Tabuleiro tab)
        {
            for (int i = 0; i < tab.linhas; i++)
            {
                ConsoleColor back = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.Blue;
                Console.Write(8 - i + " ");
                Console.ForegroundColor = back;
                for (int j = 0; j < tab.colunas; j++)
                {
                    imprimirPeca(tab.peca(i, j));
                }
                Console.WriteLine();
            }
            ConsoleColor aux = Console.ForegroundColor;

            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("  a b c d e f g h ");
            Console.ForegroundColor = aux;
        }
Esempio n. 17
0
        public static void exibirTabuleiro(Tabuleiro tabuleiro)
        {
            ConsoleColor aux;

            for (int i = 0; i < tabuleiro.linhas; i++)
            {
                aux = Console.ForegroundColor;
                Console.ForegroundColor = ConsoleColor.DarkCyan;
                Console.Write(8 - i + " ");
                Console.ForegroundColor = aux;

                for (int j = 0; j < tabuleiro.colunas; j++)
                {
                    exibirPeca(tabuleiro.peca(i, j));
                }
                Console.WriteLine();
            }
            aux = Console.ForegroundColor;
            Console.ForegroundColor = ConsoleColor.DarkCyan;
            Console.Write("  A B C D E F G H");
            Console.ForegroundColor = aux;
        }
Esempio n. 18
0
        public static void ImprimirTabuleiro(Tabuleiro tab, bool[,] possiveis)
        {
            ConsoleColor fundoOriginal = Console.BackgroundColor;
            ConsoleColor fundoAlterado = ConsoleColor.DarkBlue;

            int  row = tab.Linhas;
            char col = 'A';

            Console.WriteLine();

            for (int i = 0; i < tab.Linhas; i++)
            {
                Console.Write($"{row}   ");
                for (int j = 0; j < tab.Linhas; j++)
                {
                    if (possiveis[i, j])
                    {
                        Console.BackgroundColor = fundoAlterado;
                    }
                    else
                    {
                        Console.BackgroundColor = fundoOriginal;
                    }
                    ImprimePeca(tab.peca(i, j));
                }
                Console.WriteLine();
                row--;
                Console.BackgroundColor = fundoOriginal;
            }


            Console.Write("\n    ");
            for (int i = 0; i < tab.Colunas; i++)
            {
                Console.Write(col + " ");
                col++;
            }
        }
Esempio n. 19
0
 private bool Livre(Posicao pos)
 {
     return(Tabuleiro.peca(pos) == null);
 }
Esempio n. 20
0
        //Imprimir tabuleiro cor dos movimentos possiveis
        public static void ImprimirTabuleiro(Tabuleiro tab, bool[,] posicosPossiveis)
        {
            ConsoleColor fundoOrig = Console.BackgroundColor;
            ConsoleColor fundoAlt  = ConsoleColor.White;

            ConsoleColor fundoAtual = Console.BackgroundColor;
            ConsoleColor fundoNovo  = ConsoleColor.Yellow;

            Console.WriteLine();
            for (int i = 0; i < tab.Linhas; i++)
            {
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.Write(" ");
                Console.Write(8 - i + " ");
                for (int j = 0; j < tab.Colunas; j++)
                {
                    if (i == j)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }
                    else if (i % 2 == 0 && j == 0)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 1 && j == 1)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 0 && j == 2)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 1 && j == 3)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 0 && j == 4)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }
                    else if (i % 2 == 1 && j == 5)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 0 && j == 6)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 1 && j == 7)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else
                    {
                        Console.BackgroundColor = ConsoleColor.DarkGray;
                    }


                    if (posicosPossiveis[i, j])
                    {
                        Console.BackgroundColor = fundoNovo;
                    }

                    ImprimirPecas(tab.peca(i, j));
                    Console.Write(" ");
                }
                Console.WriteLine();
                Console.BackgroundColor = fundoOrig;
            }

            Console.WriteLine("   a b c d e f g h");
        }
Esempio n. 21
0
        public static void ImprimirTabuleiro(Tabuleiro tab)
        {
            ConsoleColor fundoOrig = Console.BackgroundColor;
            ConsoleColor fundoAlt  = ConsoleColor.White;

            Console.WriteLine();
            for (int i = 0; i < tab.Linhas; i++)
            {
                Console.ForegroundColor = ConsoleColor.DarkGray;
                Console.Write(" ");
                Console.Write(8 - i + " ");
                for (int j = 0; j < tab.Colunas; j++)
                {
                    Console.Write("");
                    if (i == j)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }
                    else if (i % 2 == 0 && j == 0)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 1 && j == 1)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 0 && j == 2)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 1 && j == 3)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 0 && j == 4)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }
                    else if (i % 2 == 1 && j == 5)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 0 && j == 6)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else if (i % 2 == 1 && j == 7)
                    {
                        Console.BackgroundColor = fundoAlt;
                    }

                    else
                    {
                        Console.BackgroundColor = ConsoleColor.DarkGray;
                    }

                    //Console.BackgroundColor = fundoOrig;

                    ImprimirPecas(tab.peca(i, j));
                    Console.Write(" ");
                }
                Console.WriteLine();
                Console.BackgroundColor = fundoOrig;
            }

            Console.WriteLine("   a b c d e f g h");
        }
Esempio n. 22
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] matriz = new bool[Tabuleiro.Linha, Tabuleiro.Coluna];

            Posicao pos = new Posicao(0, 0);

            //acima
            pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }

            //ne
            pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }

            //abaixo
            pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }

            //se
            pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }

            //direita
            pos.DefinirValores(Posicao.Linha, Posicao.Coluna + 1);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }


            //no
            pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }


            //so
            pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }

            //esquerda
            pos.DefinirValores(Posicao.Linha, Posicao.Coluna - 1);
            if (Tabuleiro.PosicaoValida(pos) && PodeMover(pos))
            {
                matriz[pos.Linha, pos.Coluna] = true;
            }

            //#jogada especial roque
            if (QtdMovimento == 0 && !Partida.Xeque)
            {
                //#jogada especial roque pequeno
                Posicao PosT1 = new Posicao(Posicao.Linha, Posicao.Coluna + 3);
                if (TesteTorreParaRoque(PosT1))
                {
                    Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna + 1);
                    Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna + 2);
                    if (Tabuleiro.peca(p1) == null && Tabuleiro.peca(p2) == null)
                    {
                        matriz[Posicao.Linha, Posicao.Coluna + 2] = true;
                    }
                }

                //#jogada especial roque grande
                Posicao PosT2 = new Posicao(Posicao.Linha, Posicao.Coluna - 4);
                if (TesteTorreParaRoque(PosT2))
                {
                    Posicao p1 = new Posicao(Posicao.Linha, Posicao.Coluna - 1);
                    Posicao p2 = new Posicao(Posicao.Linha, Posicao.Coluna - 2);
                    Posicao p3 = new Posicao(Posicao.Linha, Posicao.Coluna - 3);
                    if (Tabuleiro.peca(p1) == null && Tabuleiro.peca(p2) == null && Tabuleiro.peca(p3) == null)
                    {
                        matriz[Posicao.Linha, Posicao.Coluna - 2] = true;
                    }
                }
            }



            return(matriz);
        }
Esempio n. 23
0
        private bool TesteTorreParaRoque(Posicao pos)
        {
            Peca p = Tabuleiro.peca(pos);

            return(p != null && p is Torre && p.Cor == Cor && p.QtdMovimento == 0);
        }
Esempio n. 24
0
        public bool PodeMover(Posicao posicao)
        {
            Peca p = Tabuleiro.peca(posicao);

            return(p == null || p.Cor != Cor);
        }
Esempio n. 25
0
        public override bool[,] MovimentosPossiveis()
        {
            bool[,] matriz = new bool[Tabuleiro.Linha, Tabuleiro.Coluna];

            Posicao pos = new Posicao(0, 0);


            if (Cor == Cor.Branca)
            {
                pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna);
                if (Tabuleiro.PosicaoValida(pos) && Livre(pos))
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(Posicao.Linha - 2, Posicao.Coluna);
                Posicao p2 = new Posicao(Posicao.Linha - 1, Posicao.Coluna);
                if (Tabuleiro.PosicaoValida(pos) && Livre(pos) && Livre(p2) && QtdMovimento == 0)
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna + 1);
                if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos))
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(Posicao.Linha - 1, Posicao.Coluna - 1);
                if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos))
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                //#jogada especial en passant
                if (Posicao.Linha == 3)
                {
                    Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1);
                    if (Tabuleiro.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tabuleiro.peca(esquerda) == Partida.VulneravelEnPassant)
                    {
                        matriz[esquerda.Linha - 1, esquerda.Coluna] = true;
                    }
                    Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1);
                    if (Tabuleiro.PosicaoValida(direita) && ExisteInimigo(direita) && Tabuleiro.peca(direita) == Partida.VulneravelEnPassant)
                    {
                        matriz[direita.Linha - 1, direita.Coluna] = true;
                    }
                }
            }

            else
            {
                pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna);
                if (Tabuleiro.PosicaoValida(pos) && Livre(pos))
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(Posicao.Linha + 2, Posicao.Coluna);
                Posicao p2 = new Posicao(Posicao.Linha + 1, Posicao.Coluna);
                if (Tabuleiro.PosicaoValida(pos) && Livre(pos) && QtdMovimento == 0 && Livre(p2))
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna + 1);
                if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos))
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                pos.DefinirValores(Posicao.Linha + 1, Posicao.Coluna - 1);
                if (Tabuleiro.PosicaoValida(pos) && ExisteInimigo(pos))
                {
                    matriz[pos.Linha, pos.Coluna] = true;
                }

                //#jogada especial en passant
                if (Posicao.Linha == 4)
                {
                    Posicao esquerda = new Posicao(Posicao.Linha, Posicao.Coluna - 1);
                    if (Tabuleiro.PosicaoValida(esquerda) && ExisteInimigo(esquerda) && Tabuleiro.peca(esquerda) == Partida.VulneravelEnPassant)
                    {
                        matriz[esquerda.Linha + 1, esquerda.Coluna] = true;
                    }
                    Posicao direita = new Posicao(Posicao.Linha, Posicao.Coluna + 1);
                    if (Tabuleiro.PosicaoValida(direita) && ExisteInimigo(direita) && Tabuleiro.peca(direita) == Partida.VulneravelEnPassant)
                    {
                        matriz[direita.Linha + 1, direita.Coluna] = true;
                    }
                }
            }
            //acima



            return(matriz);
        }
        private bool podeMover(Posicao posicao)
        {
            Peca p = Tabuleiro.peca(posicao);

            return(p == null || p.Cor != this.Cor);
        }
Esempio n. 27
0
        public bool ExisteInimigo(Posicao pos)
        {
            Peca p = Tabuleiro.peca(pos);

            return(p != null && p.Cor != Cor);
        }