Ir ao conteúdo

Posts recomendados

Postado

Estou fazendo um programa em C, especificamente um Sudoku. Estou usando a biblioteca Ncurses para criar uma interface diferente da do terminal, e lá fazer o jogo, alocando em lugares específicos cada coisa. Desejo que o tabuleiro já venha com alguns números, claro, e que estes números venham "coloridos", porém os que o usuário digitar não. Além disso nos espaços em branco (onde o usuário poderá substituir por números) deverá haver um ponto.

Pra isso criei a função draw_numbers, que "desenha" e redesenha(quando o usuário substituir alguma casa) os números, e que na primeira vez que é usada, quando desenha os números que vem com o tabuleiro, ela colore somente os números, porém quando o usuário fizer uma alteração não, para o usuário saber o que ele pode e o que não pode alterar. A função é assim(g.col_ini = 0): 

 


 

void

draw_numbers(int tp, int lt)// tp e lt são cordenadas do centro do tabuleiro

{

    for (int i = 0; i < 9; i++)

        for (int j = 0; j < 9; j++)

        {

            char c = (g.board[i][j] == 0) ? '.' : g.board[i][j] + '0'; //board é o array global de chars que representa os números e os pontos do tabuleiro           

            if (has_colors() && g.col_ini == 0 && g.board[i][j] != '.')// verifica se é possível ligar as cores, e se é a primeira vez que a função é executada

                attron(COLOR_PAIR(PAIR_LOGO)); //liga a cor (definida anteriormente para vermelho)

                mvaddch(tp + i + 1 + i/3, lt + 2 + 2*(j + j/3), c); //imprime o caractere em uma coordenada na tela

                refresh();//atualiza a tela

            if (has_colors())

                attroff(COLOR_PAIR(PAIR_LOGO)); // desliga as cores

         }

            g.col_ini += 1;

}


 

O funcionamento esperado era imprimir todos os caracteres nos lugares certos, e caso fosse a primeira vez que a função foi usada (col_ini seria 0) e o caractere não for um ponto, o programa ligava as cores para imprimir colorido. porém ele nunca liga as cores. O problema é no col_ini pois quando eu tiro ele da função ela imprime todos os números coloridos (até os que o usuário digitou). como faço para resolver?

 

 

 

  • Obrigado 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...