Escrevendo Colorido no C

Publicado por Jose Maria Silveira Neto 05/04/2004

[ Hits: 21.076 ]

Download cores.c




Este código-fonte mostra como escrever colorido no prompt do Linux pelo C. Com um pouco de criatividade é possível fazer coisas surpreendentes. Se você unir esta tecnica com ARTE-ASCII coisas lindas vão surgir. :D
O código está bem documentado e você so copiando e colando pode usar isso no seu código. Seria muito bem vindo se alguem cria-se uma biblioteca, um arquivo .h, desse código !

  



Esconder código-fonte

#include<stdio.h>

// ANSI-Cores
#define C_VERMELHO     "{FONTE}33[41m{FONTE}33[37m"
#define C_VERDE        "{FONTE}33[42m{FONTE}33[30m"
#define C_LARANJA      "{FONTE}33[43m{FONTE}33[30m"
#define C_AZUL         "{FONTE}33[44m{FONTE}33[37m"
#define C_ROSA         "{FONTE}33[45m{FONTE}33[37m"
#define C_CIANO        "{FONTE}33[46m{FONTE}33[30m"
#define C_BRANCO       "{FONTE}33[47m{FONTE}33[30m"
#define C_PRETO        "{FONTE}33[40m{FONTE}33[37m"
#define RESTAURA       "{FONTE}33[00m"

// Funcoes de cores
void vermelho (char string[]) {printf("%s%s%s\n",C_VERMELHO,string,RESTAURA);}

void verde (char string[]) 
{printf("%s%s%s\n",C_VERDE   ,string,RESTAURA);}

void laranja (char string[])
{printf("%s%s%s\n",C_LARANJA ,string,RESTAURA);}

void azul(char string[]) 
{printf("%s%s%s\n",C_AZUL    ,string,RESTAURA);}

void rosa(char string[])
{ printf("%s%s%s\n",C_ROSA    ,string,RESTAURA);}

void ciano    (char string[]) 
{printf("%s%s%s\n",C_CIANO   ,string,RESTAURA);}

void branco (char string[])
{ printf("%s%s%s\n",C_BRANCO  ,string,RESTAURA);}

void preto (char string[])
{printf("%s%s%s\n",C_PRETO   ,string,RESTAURA);}

// Principal
int main()
{
   vermelho("Vermelho");
   verde   ("Verde");
   laranja ("Laranja");
   azul    ("Azul");
   rosa    ("ROSA");
   ciano   ("Ciano");
   branco  ("Branco");
   preto   ("Preto");
}

Scripts recomendados

Agenda eletrônica feita em C

Rotinas para manipulação de matrizes

Angelinux Scripts - Palpite para Megasena em C

Anagramas

Obtendo o tempo em C


  

Comentários
[1] Comentário enviado por birilo em 10/04/2004 - 14:46h

Meu, num testei isso ainda, mas já tá copiado...
Se tiver funcionando, vai ser uma mão na roda.... =)

[2] Comentário enviado por jose_maria em 23/04/2004 - 12:28h

O Gustavo Franco Porto me mandou um email pedindo para que eu explicasse o
funcionamento desse código ai vai.
O código-fonte que está aqui, eu não me lembro de ter colocado esses {FONTE}
dentro deles não. :P
Isso aí é ANSI, é um padrão mesmo, para o terminal. É um pouco trabalhoso, mas
não precisa aprender nenhuma outra biblioteca extra, e pode deixar os seus
progras em C bem mais bonitinhos. :*
É como eu digitar "\b" para tocar um beep ou "\n" para saltar um linha
Quando eu digo
#define C_VERDE "33[42m33[30m"
Eu estou dizendo que a cor de frente será a 42(verde) e a de fundo 30 (preta).
Esse programa está didático você pode reescreve-lo para ter uma função estilo
setbackgrounfcolor e setforegroundcolor.

Dica Bônus 1:
Limpando a tela de uma maneira bem diferente (ANSI):
printf("{COMENTARIO}33[H{COMENTARIO}33[2J");

Dica Bônus 2:
Execute para ver o que é:
#include<stdio.h>
int branco(int j){int k;for (k=0;k<j;k++){printf(" ");}}
int main(){int i;for(i=0;i<20;i++){printf("{COMENTARIO}33[H{COMENTARIO}33[2J");usleep(50000);
branco(i);printf(" __@\n");branco(i);
printf(" _`\\<,_\n");branco(i);printf(" (*)/ (*)\n");}}

:D

[3] Comentário enviado por pedro_reis em 12/11/2009 - 19:50h

Foi só comigo que esse código não funcionou? Compilei usando o gcc no Ubuntu 9.10

[4] Comentário enviado por pedro_reis em 12/11/2009 - 19:58h

p.s. Sim, eu tirei esses {FONTE} do código


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts