Exemplo n.º 1
0
        static void Main(string[] args)
        {
            Tabuleiro tab = new Tabuleiro(8, 8);

            tab.ColocaPeca(new Rei(Cor.preta, tab), new Posicao(0, 2));
            tab.ColocaPeca(new Torre(Cor.preta, tab), new Posicao(0, 0));
            tab.ColocaPeca(new Torre(Cor.preta, tab), new Posicao(0, 7));

            Tela.ImprimirTabuleiro(tab);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converte uma string FEN para o tabuleiro.
        /// </summary>
        /// <param name="fen">string FEN representando uma posicão</param>
        /// <param name="tabuleiro">tabuleiro a ser atualizado com a posicão FEN</param>
        public static void ConverteFenParaTabuleiro(string fen, Tabuleiro tabuleiro)
        {
            string[] partes = fen.Split(' ');

            string posicao_pecas       = partes[0];
            string cor_jogar           = partes[1];
            string estado_roque        = partes[2];
            string casa_en_passant     = partes[3];
            string contador_regra_50   = partes.Length > 4 ? partes[4] : "0";
            string contador_movimentos = partes.Length > 4 ? partes[5] : "0";

            int fileira = Defs.PRIMEIRA_FILEIRA;
            int coluna  = Defs.PRIMEIRA_COLUNA;

            foreach (var caracter in posicao_pecas)
            {
                if (char.IsDigit(caracter))
                {
                    coluna += int.Parse(caracter.ToString());
                }
                else
                {
                    switch (caracter)
                    {
                    case '/':
                        fileira += 1;
                        coluna   = Defs.PRIMEIRA_COLUNA;
                        break;

                    default:
                        tabuleiro.ColocaPeca(fileira * Defs.NUMERO_COLUNAS + coluna++, caracter.ParaPeca());
                        break;
                    }
                }
            }

            tabuleiro.CorJogar = cor_jogar.ParaCor();

            if (estado_roque.Contains('K'))
            {
                tabuleiro.RoqueE1G1 = true;
            }
            if (estado_roque.Contains('Q'))
            {
                tabuleiro.RoqueE1C1 = true;
            }
            if (estado_roque.Contains('k'))
            {
                tabuleiro.RoqueE8G8 = true;
            }
            if (estado_roque.Contains('q'))
            {
                tabuleiro.RoqueE8C8 = true;
            }

            tabuleiro.IndiceEnPassant = Defs.ObtemIndiceDaPosicao(casa_en_passant);

            tabuleiro.ContadorRegra50 = int.Parse(contador_regra_50);

            tabuleiro.ContadorMovimentos = int.Parse(contador_movimentos);
        }