Ir ao conteúdo
  • Cadastre-se

Usando letras coloridas em C


Victor.main
Ir à solução Resolvido por ScreenBlack,

Posts recomendados

Boa noite!

Estou quase terminando meu trabalho: criar um jogo de senha usando cores... Como parte interativa do projeto, devo usar cores de verdade nas palavras utilizando uma biblioteca cores.h como no exemplo:

 

(Para cada cor que o usuário digitou, 'o' deve sair colorido. Cada cor é representada por abreviações)

 

Digite sua jogada: vm, vd, am, az

 

o o o o

 

Mas faço o seguinte código e aparece vários o's de cores quase aleatórias... não sei porque...

for(i=0; i<n; i++) {    printf("%s, ", vs[i]);    if (strcmp(jog[i], "vm")){      printf("%so ", COR_VERMELHO);    }    if (strcmp(jog[i], "vd")){      printf("%so ", COR_VERDE);      }      if (strcmp(jog[i], "am")) {      printf("%so ", COR_AMARELO);    }      if (strcmp(jog[i], "az")) {      printf("%so ", COR_AZUL);       }    if (strcmp(jog[i], "mg")) {      printf("%so ", COR_MAGENTA);    }    if (strcmp(jog[i], "ci")){      printf("%so ", COR_CIANO);      }  }

vs é o vetor onde estou guardando as jogadas do usuario... A biblioteca cores.h é a seguinte (estou desconfiando que não estou sabendo usar...

#ifndef __CORES_TRABALHO#define COR_NORMAL      "\x1B[0m"#define COR_VERMELHO      "\x1B[31m"#define COR_VERDE       "\x1B[32m"#define COR_AMARELO      "\x1B[33m"#define COR_AZUL        "\x1B[34m"#define COR_MAGENTA     "\x1B[35m"#define COR_CIANO       "\x1B[36m"#define COR_BRANCO      "\x1B[37m"#define COR_PRETO       "\x1B[30m"#define FUNDO_PRETO     "\x1B[40m"#define FUNDO_VERMELHO    "\x1B[41m"#define FUNDO_VERDE     "\x1B[42m"#define FUNDO_AMARELO    "\x1B[43m"#define FUNDO_AZUL      "\x1B[44m"#define FUNDO_MAGENTA    "\x1B[45m"#define FUNDO_CIANO     "\x1B[46m"#define FUNDO_BRANCO    "\x1B[47m"#define FUNDO_NORMAL    "\x1B[49m"#define __CORES_TRABALHO#endif/**********************  EXEMPLO DE UTILIZAÇÃO printf("Entre a sua jogada, composta de cinco cores separadas por vírgula, usando o código a seguir:\n%s - vm = vermelho\n%s - vd = verde\n%s - am = amarelo\n%s - az = azul\n%s - mg = magenta\n%s - cn = ciano\n\n%sEntre sua jogada: ", COR_VERMELHO, COR_VERDE, COR_AMARELO, COR_AZUL, COR_MAGENTA, COR_CIANO, COR_NORMAL);  */
Link para o comentário
Compartilhar em outros sites

  • Solução

O retorno da função strcmp() será zero caso os conteúdos comparados sejam iguais.

Tente assim:

for(i=0; i<n; i++) {    printf("%s, ", vs[i]);    if ( !strcmp(jog[i], "vm") ){      printf("%so ", COR_VERMELHO);    }    if ( !strcmp(jog[i], "vd") ){      printf("%so ", COR_VERDE);      }      if ( !strcmp(jog[i], "am") ) {      printf("%so ", COR_AMARELO);    }      if ( !strcmp(jog[i], "az") ) {      printf("%so ", COR_AZUL);       }    if ( !strcmp(jog[i], "mg") ) {      printf("%so ", COR_MAGENTA);    }    if ( !strcmp(jog[i], "ci") ){      printf("%so ", COR_CIANO);      }  }

Para o if() valer, esse valor retornado precisa ser diferente de zero. A exclamação ('!') na frente da função, nesse caso, serve para inverter o resultado. Ou seja, se o retorno for zero (0), ele inverte para um (1).

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!