示例#1
0
文件: Tela.cs 项目: aurinolins/xadrez
        public static void ImprimirTabuleiro(tabuleiro Tab, Cor jogador)
        {
            for (int i = 0; i < Tab.linhas; i++)
            {
                Console.Write(8 - i + " ");
                for (int j = 0; j < Tab.colunas; j++)
                {
                    if (Tab.peca(i, j) == null)
                    {
                        Console.Write("- ");
                    }
                    else
                    {
                        imprimirpeca(Tab.peca(i, j));
                        Console.Write(" ");
                    }
                }
                Console.WriteLine();
            }
            Console.WriteLine("  a b c d e f g h");
            Console.WriteLine();
            if (jogador == Cor.Branca)
            {
                Console.WriteLine("As Brancas jogam !!! ");
            }
            else
            {
                Console.WriteLine("As pretas jogam !!! ");
            }

            Console.WriteLine();
        }
示例#2
0
        public override bool movimentospossiveis(tabuleiro tab, Posicao origem, Posicao destino)
        {
            if (origem.Linha == destino.Linha || origem.Coluna == destino.Coluna)
            {
                return(false);
            }

            Posicao pos = new Posicao(origem.Linha, origem.Coluna);

            while (pos.Linha != destino.Linha && pos.Coluna != destino.Coluna)
            {
                if (destino.Linha > origem.Linha)
                {
                    pos.Linha++;
                }
                else
                {
                    pos.Linha--;
                }

                if (destino.Coluna > origem.Coluna)
                {
                    pos.Coluna++;
                }
                else
                {
                    pos.Coluna--;
                }
                if (!tab.PosicaoValida(pos))
                {
                    return(false);
                }

                if (tab.peca(pos.Linha, pos.Coluna) == null)
                {
                    if (pos.Linha == destino.Linha &&
                        pos.Coluna == destino.Coluna)
                    {
                        return(true);
                    }
                    else
                    {
                        continue;
                    }
                }

                if (tab.peca(pos.Linha, pos.Coluna).cor !=
                    tab.peca(origem.Linha, origem.Coluna).cor&&
                    pos.Linha == destino.Linha &&
                    pos.Coluna == destino.Coluna)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            return(false);
        }
示例#3
0
        public override bool movimentospossiveis(tabuleiro tab, Posicao origem, Posicao destino)
        {
            if (destino.Linha == origem.Linha || destino.Coluna == origem.Coluna)
            {
                return(false);
            }

            if (destino.Linha > origem.Linha + 2 ||
                destino.Linha < origem.Linha - 2 ||
                destino.Coluna > origem.Coluna + 2 ||
                destino.Coluna < origem.Coluna - 2)
            {
                return(false);
            }

            if (destino.Linha == origem.Linha + 1 ||
                destino.Linha == origem.Linha - 1)
            {
                if (destino.Coluna == origem.Coluna + 2 ||
                    destino.Coluna == origem.Coluna - 2)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            if (destino.Linha == origem.Linha + 2 ||
                destino.Linha == origem.Linha - 2)
            {
                if (destino.Coluna == origem.Coluna + 1 ||
                    destino.Coluna == origem.Coluna - 1)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            if (tab.peca(destino.Linha, destino.Coluna) == null)
            {
                return(true);
            }

            if (tab.peca(destino.Linha, destino.Coluna).cor !=
                tab.peca(origem.Linha, origem.Coluna).cor)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#4
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;
                    }
                    imprimirPeca(tab.peca(i, j));
                    Console.BackgroundColor = fundoOriginal;
                    Console.Write(" ");
                }
                Console.WriteLine();
            }
            Console.WriteLine("  A B C D E F G H");
            Console.BackgroundColor = fundoOriginal;
        }
示例#5
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++)
         {
             imprimirPeca(tab.peca(i, j));
         }
         Console.WriteLine();
     }
     Console.WriteLine("    A  B  C  D  E  F  J  H");
 }
示例#6
0
 public static void imprimirTabuleiro(tabuleiro tab)
 {
     for (int i = 0; i < tab.linha; i++)
     {
         Console.Write(8 - i + " ");
         for (int j = 0; j < tab.coluna; j++)
         {
             imprimirPeca(tab.peca(i, j));
         }
         Console.WriteLine();
     }
     Console.WriteLine("  a b c d e f g h");
 }
示例#7
0
文件: Peao.cs 项目: aurinolins/xadrez
        public override bool movimentospossiveis(tabuleiro tab, Posicao origem, Posicao destino)
        {
            if (tab.peca(origem.Linha, origem.Coluna).cor == Cor.Branca &&
                destino.Linha > origem.Linha)
            {
                return(false);
            }
            if (tab.peca(origem.Linha, origem.Coluna).cor == Cor.Preta &&
                destino.Linha < origem.Linha)
            {
                return(false);
            }

            if ((origem.Linha == 3 || origem.Linha == 4) &&
                destino.Coluna != origem.Coluna &&
                tab.peca(destino.Linha, destino.Coluna) == null &&
                tab.peca(origem.Linha, destino.Coluna) is Peao &&
                tab.peca(origem.Linha, destino.Coluna).cor !=
                tab.peca(origem.Linha, origem.Coluna).cor&&
                tab.peca(origem.Linha, destino.Coluna) == partida.vulneravelenpassant)
            {
                return(true);
            }

            if (destino.Linha == origem.Linha)
            {
                return(false);
            }

            if (destino.Coluna > origem.Coluna + 1 ||
                destino.Coluna < origem.Coluna - 1)
            {
                return(false);
            }

            if (tab.peca(origem.Linha, origem.Coluna).qteMovimentos == 0)
            {
                if (destino.Linha > origem.Linha + 2 ||
                    destino.Linha < origem.Linha - 2)
                {
                    return(false);
                }
                if ((destino.Linha == origem.Linha + 2 ||
                     destino.Linha == origem.Linha - 2) &&
                    destino.Coluna != origem.Coluna)
                {
                    return(false);
                }
            }
            if (tab.peca(origem.Linha, origem.Coluna).qteMovimentos != 0)
            {
                if (destino.Linha > origem.Linha + 1 ||
                    destino.Linha < origem.Linha - 1 ||
                    destino.Coluna > origem.Coluna + 1 ||
                    destino.Coluna < origem.Coluna - 1)
                {
                    return(false);
                }
            }
            if (tab.peca(destino.Linha, destino.Coluna) == null)
            {
                if (destino.Coluna == origem.Coluna)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }

            if (tab.peca(destino.Linha, destino.Coluna).cor !=
                tab.peca(origem.Linha, origem.Coluna).cor&&
                destino.Coluna != origem.Coluna)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
示例#8
0
        public override bool movimentospossiveis(tabuleiro tab, Posicao origem, Posicao destino)
        {
            if (origem.Linha != destino.Linha && origem.Coluna != destino.Coluna)
            {
                return(false);
            }

            Posicao pos = new Posicao(tab.linhas, tab.colunas);


            if (origem.Linha == destino.Linha)
            {
                /*
                 * Pesquisa Horizontal
                 */
                pos.Linha  = origem.Linha;
                pos.Coluna = origem.Coluna;
                while (pos.Coluna != destino.Coluna)
                {
                    if (destino.Coluna > origem.Coluna)
                    {
                        pos.Coluna = pos.Coluna + 1;
                    }
                    else
                    {
                        pos.Coluna = pos.Coluna - 1;
                    }
                    if (!tab.PosicaoValida(pos))
                    {
                        continue;
                    }

                    if (tab.peca(pos.Linha, pos.Coluna) == null)
                    {
                        continue;
                    }
                    if (tab.peca(pos.Linha, pos.Coluna).cor !=
                        tab.peca(origem.Linha, origem.Coluna).cor&&
                        pos.Coluna == destino.Coluna)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
                return(true);
            }

            /*
             *  Pesquisa Vertical
             */
            pos.Linha  = origem.Linha;
            pos.Coluna = origem.Coluna;
            while (pos.Linha != destino.Linha)
            {
                if (destino.Linha > origem.Linha)
                {
                    pos.Linha = pos.Linha + 1;
                }
                else
                {
                    pos.Linha = pos.Linha - 1;
                }
                if (!tab.PosicaoValida(pos))
                {
                    continue;
                }

                if (tab.peca(pos.Linha, pos.Coluna) == null)
                {
                    continue;
                }
                if (tab.peca(pos.Linha, pos.Coluna).cor !=
                    tab.peca(origem.Linha, origem.Coluna).cor&&
                    pos.Linha == destino.Linha)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            return(true);
        }