Ir ao conteúdo

Posts recomendados

Postado

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;
}

 

Postado

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

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

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

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!