Ir ao conteúdo
  • Cadastre-se

C colorir só alguns caracteres


devair1010

Posts recomendados

olá pessoal, alguém pode me ajudar, estou fazendo o jogo da lacraia e quero colorir os caracteres dessa lacraia de uma cor e os outros de outra cor, tem como fazer isso na linguagem c?        agradeço quem puder ajudar .   aqui está o código que estou fazendo .

/*            instruções
   - controle a lacraia com as setas do teclado
   - pegue a maçã para ganhar 3 pontos cada
   - se demorar muito a maçã vai para outro lugar
   - tecle ESC para parar
*/
#include <stdio.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
int letras[7][7]={{ 224, 64, 64, 64, 64, 68,252 }, /*L*/
                  { 56 , 68,130,130,254,130,130 }, /*A*/
                  { 60 , 66,128,128,128, 66, 60 }, /*C*/
                  { 252,130,130,252,136,132,130 }, /*R*/
                  { 56 , 68,130,130,254,130,130 }, /*A*/
                  { 124, 16, 16, 16, 16, 16,124 }, /*I*/
                  { 56 , 68,130,130,254,130,130 }};/*A*/
void gotoxy(int x,int y){
    COORD c;
    c.X = x;
    c.Y = y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}

int i,a,b,c,player[20][2],direcao,mac;
int h,g,pts,tempo;
int som(int f){
    Beep(f,150);/* primeiro a frquência depois o tempo de duração do som */
    return 0;
}
void desenha_lacraia(){
    a=player[0][0];                       /*pega a posião x do rabo da lacraia*/
    b=player[0][1];                       /*pega a posião y do rabo da lacraia*/
    for(i=0;i<20;i++){                    /* todos os vinte pedaços da lacraia */
        gotoxy(player[i][0],player[i][1]);/* coloca o cursor na posição */
        printf("%c",42); /*42*/           /* coloca cada um dos pedaço da lacraia */
    }
    gotoxy(player[19][0],player[19][1]);  /* coloca o cursor na posição da cabeça da lacraia */
    printf("O");    /* imprime a cabeça da lacraia */
    gotoxy(a,b);    /* coloca o cursor na posição do rabo da lacraia */
    printf(" ");    /* apaga o último caractere da lacraia que é o rabo que tinha ficado para tras */
    gotoxy(59,2);   /*coloca o cursor na posição de imprimir os pontos */
    printf("                  ");/* apaga o que estiver escrito */
    gotoxy(59,2);   /* coloca o cursor na posição de imprimir os pontos */
    printf("Pontos -%c %d",16,pts);/* imprime os pontos */
    tempo++;        /* soma o tempo */
    if(tempo > 80){ /* tempo que a maçã pode ficar no mesmo lugar */
        mac=0;      /* para poder colocar outra maçã*/
        gotoxy(h,g);/* coloca o cursor na posição da maçã */
        printf(" ");/* remove a maçã */
        som(1500);  /* som maçã mudou de lugar */
    }
}
void atualiza_lacraia(){
    for(i=0;i<19;i++){                /* a lacraia tem vinte pedaços */
        player[i][0] = player[i+1][0];/* puxa os pedaços da lcraia para tras */
        player[i][1] = player[i+1][1];/* puxa os pedaços da lcraia para tras */
    }
}
int move_lacraia(){
    for(i=0;i<20;i++){
        c=0;
        if(kbhit())
            c=getch();
        if(c==27)
            return 0;
        if(c==77){                   /* seta p/direita */
            if(direcao==2)som(500);  /* tentou voltar para tras */
            else direcao=0;
        }
        if(c==80){                   /* seta p/baixo */
            if(direcao==3)som(500);  /* tentou voltar para tras */
            else direcao=1;
        }
        if(c==75){                   /* seta p/esquerda */
            if(direcao==0)som(500);  /* tentou voltar para tras */
            else direcao=2;
        }
        if(c==72){                   /* seta p/cima */
            if(direcao==1)som(500);  /* tentou voltar para tras */
            else direcao=3;
        }
    }
    switch(direcao){
        case 0:
            if(player[19][0] < 45){  /* coluna da posição da cabeça da lacraia */
                atualiza_lacraia();  /* puxa os pedaços da lacraia para tras */
                player[19][0]++;     /* move a cabeça da lacraia para direita */
            }else som(900);          /* som bateu nas bordas */
            break;
        case 1:
            if(player[19][1] < 23){  /* linha da posição da cabeça da lacraia */
                atualiza_lacraia();  /* puxa os pedaços da lacraia para tras */
                player[19][1]++;     /* move a cabeça da lacraia para baixo */
            }else som(900);          /* som bateu nas bordas */
            break;
        case 2:
            if(player[19][0] > 1){   /* coluna da posição da cabeça da lacraia */
                atualiza_lacraia();  /* puxa os pedaços da lacraia para tras */
                player[19][0]--;     /* move a cabeça da lacraia para esquerda */
            }else som(900);          /* som bateu nas bordas */
            break;
        case 3:
            if(player[19][1] > 1){   /* linha da posição da cabeça da lacraia */
                atualiza_lacraia();  /* puxa os pedaços da lacraia para tras */
                player[19][1]--;     /* move a cabeça da lacraia para cima */
            }else som(900);          /* som bateu nas bordas */
            break;
    }
    if(player[19][0]==h&&player[19][1]==g){/* se lacraia comeu a maçã */
        mac=0;                       /* sem maça */
        pts+=3;                      /* soma os pontos */
        som(2200);                   /* som comeu maçã */
    }
    return 0;
}
int coloca_maca(){
    int t=0,u=0;
    if(mac==0)tempo=0;
    if(mac==1)return 0;                         /*se já tem maçã não coloca outra*/
    do{
        h=rand()%45+1;                          /*escolhe coluna da maçã*/
        g=rand()%22+1;                          /*escolhe linh   da maçã*/
        for(i=0;i<20;i++){
            if(h==player[i][0]&&g==player[i][1])/*se algum pedaço da lacraia for = a posição da maçã repete*/
                u=1;                            /*para repetir caso a maçã esteja sobre a lacraia */
        }
        t++;
        if(t > 1000){                           /* se o sistema demorar muito para escolher a posição da maçã */
            u=0;
            g=1;
            h=1;
        }
    }while(u!=0);
    gotoxy(h,g);             /*coluna e linha da maçã*/
    printf("%c",3);          /* coloca a maçã no lugar */
    mac=1;                   /* informa que já tem uma maçã na tela */
    return 0;
}
void tela_de_abertura(){
    int y1=15,x1=8,y2=y1,x2=x1,j,i,a,b;/*y1=linha inicial  y2 para recuperar a linha inicial*/
    for(i=0;i<7;i++){                  /*  sao 7 letras  */
        for(j=0;j<7;j++){              /*o caractere é de 7 linhas */
            a=letras[i][j];            /*pega o numero da 1 linha do caractere */
            for(b=0;b<8;b++){          /*aqui eh um numero de 8 bits*/
                gotoxy(x1, y1);        /*posiciona o cursor no local */
                if (a % 2 != 0)        /*se bit=1 */
                    printf("%c",219);  /*coloca espaço invertido */
                else
                    printf(" ");       /*senão coloca espaço normal*/
                a=a/2;              /*dividindo numero por 2 desloca os bits para direita*/
                x1--;               /* move para coluna de tras */
                Sleep(10);
            }
            y1++;                   /*muda para linha de baixo */
            x1=x2;                  /*volta para a coluna inicial*/
        }                           /*proxima linha*/
        x2=x2+8;                    /*avança 8 colunas posicionando para o prox caract*/
        x1=x2;
        y1=y2;                      /*volta para linha inicial*/
    }                               /*imprimiu o primeiro caractere*/
    gotoxy(0,23);
}
int main (){
    srand(time(NULL))    ;
    tela_de_abertura();
    printf("    Tecle");
    getch();
    system("cls");
    for(i=0;i<47;i++)    {   /* desenha as bordas */
        if(i<24)         {
            gotoxy(0,i)  ;   /* primeira coluna da tela */
            printf("%c",176);
            gotoxy(46,i) ;
            printf("%c",176);/* 219 caractere branco */
        }
        gotoxy(i,0)      ;   /* primeira linha da tela */
        printf("%c",176) ;
        gotoxy(i,24)     ;   /* ultima linha da tela */
        printf("%c",176) ;
    }
    for(i=0;i<20;i++)    {   /* coloca a posiçao da lacraia no vetor */
        player[i][0]=i+5 ;   /* coloca as colunas */
        player[i][1]=10  ;   /* coloca as linhas */
    }
    do{
        desenha_lacraia();
        move_lacraia(   );
        coloca_maca(    );
        Sleep(100       );   /* velocidade da lacraia */
    }while(c != 27);
    gotoxy(10,21);
    return 0;
}

 

Link para o comentário
Compartilhar em outros sites

o <conio.h> tem um comando chamado textcolor(int color); 

Se essa função não esta disponível então você tem o mesmo copilador que eu.

/*
 * conio.h
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is a part of the mingw-runtime package.
 * No warranty is given; refer to the file DISCLAIMER within the package.
 *
 * Low level console I/O functions. Pretty please try to use the ANSI
 * standard ones if you are writing new code.
 *
 */

#ifndef	_CONIO_H_
#define	_CONIO_H_

/* All the headers include this file. */
#include <_mingw.h>

#ifndef RC_INVOKED

#ifdef	__cplusplus
extern "C" {
#endif

_CRTIMP char* __cdecl __MINGW_NOTHROW	_cgets (char*);
_CRTIMP int __cdecl __MINGW_NOTHROW	_cprintf (const char*, ...);
_CRTIMP int __cdecl __MINGW_NOTHROW	_cputs (const char*);
_CRTIMP int __cdecl __MINGW_NOTHROW	_cscanf (char*, ...);

_CRTIMP int __cdecl __MINGW_NOTHROW	_getch (void);
_CRTIMP int __cdecl __MINGW_NOTHROW	_getche (void);
_CRTIMP int __cdecl __MINGW_NOTHROW	_kbhit (void);
_CRTIMP int __cdecl __MINGW_NOTHROW	_putch (int);
_CRTIMP int __cdecl __MINGW_NOTHROW	_ungetch (int);


#ifndef	_NO_OLDNAMES

_CRTIMP int __cdecl __MINGW_NOTHROW	getch (void);
_CRTIMP int __cdecl __MINGW_NOTHROW	getche (void);
_CRTIMP int __cdecl __MINGW_NOTHROW	kbhit (void);
_CRTIMP int __cdecl __MINGW_NOTHROW	putch (int);
_CRTIMP int __cdecl __MINGW_NOTHROW	ungetch (int);

#endif	/* Not _NO_OLDNAMES */


#ifdef	__cplusplus
}
#endif

#endif	/* Not RC_INVOKED */

#endif	/* Not _CONIO_H_ */

Instale a versão com todas as funções gráfica, daí só buscando na web.:thumbsup:

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

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