Ir ao conteúdo

Posts recomendados

Postado

Tem como eu aperfeiçoar e Se tem como o usuario não digitar o mesmo número até o fim do programa , AGRADEÇO A ATENÇÃO !


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
main(){
    
    system("color f0");
    setlocale(LC_ALL,"portuguese");
    
    int campo[7][8]=  {{57,58,59,60,61,62,63,64},
                       {65,10,11,12,13,14,15,16},
                       {17,18,19,20,21,22,23,24},
                       {25,26,27,28,29,30,31,32},
                       {33,34,35,36,37,38,39,40},
                       {41,78,43,44,45,46,47,48},
                       {49,50,51,52,53,54,55,56}};
    int vidas=3;
    int pontos=0;
    int i;
    int j;
    int num=5;
    int num1=10;
    int final;
    
    do{


    system("cls");
    printf("DICA:.\nDigite 99 para finalizar o game !\nZerar a vida ,obter 21 pontos ou ativar a bomba o jogo acaba.\n");
    printf("\nCAMPO MINADO:.\n");
    printf("_______________________");
    for(i=0;i<7;i++){
        printf("\n");
        for(j=0;j<8;j++){
            printf("%d ",campo[j]);
        }
    }
     printf("\nI__________I__________I");
    printf("\n\npontos (%i)\tvidas (%d)",pontos,vidas);
    printf("\n\nDigite um valor de acordo com as casas (exemplo %i,%i,%i,%i...)\nDIGITE: ",num1+3,num1+6,num1+10,num1+15);
    scanf("%d",&campo[j]);
    
    if (campo[j]==16||campo[j]==43||campo[j]==46||campo[j]==58)  {                //# BOMBA
        printf("\n# A BOMBA FOI ATIVADA");
        while(num>=0){
        Sleep(1000);
        system("cls");
        printf("# BOMBA ATIVA\n%i segundos",num);
        num-=1;
        final=1;
    }
    printf("\n\nBOMBA EXPLODIDA!\nPressione Qualquer tecla para continuar... ");
    getch();
}
    
    else if(campo[j]==61||campo[j]==27||campo[j]==29||campo[j]==31||campo[j]==42||campo[j]==41||campo[j]==56){
        printf("\n UMA VIDA PERDIDA");
        getch();
        vidas-=1;
    }
    else if (campo[j]==57 ||campo[j]== 77 ||campo[j]== 60||campo[j]==62||campo[j]==63||campo[j]==64||campo[j]==65||
    campo[j]==10||campo[j]==11||campo[j]==12||campo[j]==13||campo[j]==14||campo[j]==15||campo[j]==17||campo[j]==18||
     campo[j]==19||campo[j]==20||campo[j]==21||campo[j]==22||campo[j]==23||campo[j]==24||campo[j]==25||campo[j]==26||campo[j]==28||
     campo[j]==30||campo[j]==32||campo[j]==33||campo[j]==34||campo[j]==35||campo[j]==36||campo[j]==37||campo[j]==38||campo[j]==39||
     campo[j]==40||campo[j]==44||campo[j]==45||campo[j]==47||campo[j]==48||campo[j]==49||campo[j]==50||campo[j]==51||campo[j]==52||
     campo[j]==53||campo[j]==54||campo[j]==55){
         printf("\n+1 PONTO !!\n");
         getch();
                       pontos+=1;}
                       
                       else {
                           system("cls");
                       printf("\nDigito inválido !!!");
                       getch();
                }
        
    }while(campo[j]!=99 && vidas!=0 && pontos!=21 && final!=1 );
    system("cls");
    printf("\nFim de jogo ! ");
    printf("\n\npontos (%i)\tvidas (%d)",pontos,vidas);
    
    getch();
   
}

 

  • Curtir 1
Postado

@Thales Muchante    para postar é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de responder, pois sem ele o seu código ficou faltando alguns dados como o [ i ] .   seu código está bom, apenas organizei ele melhor e coloque para não repetir o mesmo número, e como saber quando ganhou ? 

então seu código ficou assim :

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
int campo[7][8]=  {{57,58,59,60,61,62,63,64},
                       {65,10,11,12,13,14,15,16},
                       {17,18,19,20,21,22,23,24},
                       {25,26,27,28,29,30,31,32},
                       {33,34,35,36,37,38,39,40},
                       {41,78,43,44,45,46,47,48},
                       {49,50,51,52,53,54,55,56}};
int campo2[1000],numero,flag,final;
int main(){
    int vidas=3;
    int pontos=0;
    int i;
    int j;
    int num=5;
    int num1=10;

    system("color f0");
    setlocale(LC_ALL,"");

    do{
        system("cls");
        printf("Digite  (  -1   )  Para Sair\n");
        printf("DICA:.\nDigite 99 para finalizar o game !");
        printf("\nZerar a vida ,obter 21 pontos ou ativar a bomba o jogo acaba.\n");
        printf("\nCAMPO MINADO:.\n");
        printf("_______________________");
        for(i=0;i<7;i++){
            printf("\n");
            for(j=0;j<8;j++){
                printf("%d ",campo[i][j]);
            }
        }
        printf("\nI__________I__________I");
        printf("\n\npontos (%i)\tvidas (%d)",pontos,vidas);
        printf("\n\nDigite um valor de acordo com as casas (exemplo %i,%i,%i,%i...)",num1+3,num1+6,num1+10,num1+15);
        printf("\nDIGITE: ");
        do{
            flag=0;                   /* variável resetada */
            fflush(stdin);
            scanf("%d",&numero);      /* pega o numero */
            for(j=0;j<1000;j++){      /* verifica até mil números */
                if(campo2[j]==numero){/* verif se número digitado já existe no vetor */
                    printf("Esse Número Já Foi Inserido,  Escolha Outro\n");
                    flag=1;           /* seta a variável para repetir */
                }
            }
        }while(flag==1);              /* repete se a variável estiver setada */
        if(numero == -1)break ;       /* se digitar menos hum  finaliza o programa */
        if(numero < 0 || numero > 99){/* só pode números de zero até 99 */
            system("cls");
            printf("\nDigito inválido !!!");
            getch();
        }
        for(i=0;i<1000;i++){          /* verifica as mil posições do vetor */
            if(campo2[i]==0){         /* se tiver um espaço vago no vetor */
                campo2[i]=numero;     /* coloca o número no vetor */
                break;                /* sai desse loop */
            }
        }
        if(i==1000){printf("Já Digitou Mil Números");getch();}
        if (numero==16||numero==43||numero==46||numero==58){               /* //# BOMBA*/
            printf("\n# A BOMBA FOI ATIVADA");
            while(num>=0){
                Sleep(1000);
                system("cls");
                printf("# BOMBA ATIVA\n%i segundos",num);
                num--;
                final=1;
            }
            printf("\n\nBOMBA EXPLODIDA!\nPressione Qualquer tecla para continuar... ");
            getch();
        }
        else{
            if (numero==61||numero==27||numero==29||numero==31||
                numero==42||numero==41||numero==56){
                printf("\n UMA VIDA PERDIDA");
                getch();
                vidas--;
            }
            else{
                flag=0;
                for(i=0;i<7;i++){
                    for(j=0;j<8;j++){
                        if (campo[i][j] == numero){
                            printf("\n+1 PONTO !!\n");
                            getch();
                            pontos++;
                            flag=1;
                            break;
                        }
                    }
                    if(flag==1){
                        break;
                    }
                }
            }
        }
    }while(numero!=99 || vidas!=0 || pontos!=21 || final!=1 );
    system("cls");
    printf("\nFim de jogo ! ");
    printf("\n\npontos (%i)\tvidas (%d)",pontos,vidas);
    getch();
    return 0;
}

 

  • Curtir 1
Postado
18 horas atrás, devair1010 disse:

@Thales Muchante    para postar é melhor usar o botão   <>   que está lá na barra de ferramentas da janela de responder, pois sem ele o seu código ficou faltando alguns dados como o [ i ] .   seu código está bom, apenas organizei ele melhor e coloque para não repetir o mesmo número, e como saber quando ganhou ? 

então seu código ficou assim :


#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <locale.h>
#include <windows.h>
int campo[7][8]=  {{57,58,59,60,61,62,63,64},
                       {65,10,11,12,13,14,15,16},
                       {17,18,19,20,21,22,23,24},
                       {25,26,27,28,29,30,31,32},
                       {33,34,35,36,37,38,39,40},
                       {41,78,43,44,45,46,47,48},
                       {49,50,51,52,53,54,55,56}};
int campo2[1000],numero,flag,final;
int main(){
    int vidas=3;
    int pontos=0;
    int i;
    int j;
    int num=5;
    int num1=10;

    system("color f0");
    setlocale(LC_ALL,"");

    do{
        system("cls");
        printf("Digite  (  -1   )  Para Sair\n");
        printf("DICA:.\nDigite 99 para finalizar o game !");
        printf("\nZerar a vida ,obter 21 pontos ou ativar a bomba o jogo acaba.\n");
        printf("\nCAMPO MINADO:.\n");
        printf("_______________________");
        for(i=0;i<7;i++){
            printf("\n");
            for(j=0;j<8;j++){
                printf("%d ",campo[i][j]);
            }
        }
        printf("\nI__________I__________I");
        printf("\n\npontos (%i)\tvidas (%d)",pontos,vidas);
        printf("\n\nDigite um valor de acordo com as casas (exemplo %i,%i,%i,%i...)",num1+3,num1+6,num1+10,num1+15);
        printf("\nDIGITE: ");
        do{
            flag=0;
            fflush(stdin);
            scanf("%d",&numero);
            for(j=0;j<1000;j++){
                if(campo2[j]==numero){
                    printf("Esse Número Já Foi Inserido,  Escolha Outro\n");
                    flag=1;
                }
            }
        }while(flag==1);
        if(numero == -1)break ;
        if(numero < 0 || numero > 99){
            system("cls");
            printf("\nDigito inválido !!!");
            getch();
        }
        for(i=0;i<1000;i++){
            if(campo2[i]==0)campo2[i]=numero;
            break;
        }
        if(i==1000){printf("Já Digitou Mil Números");getch();}
        if (numero==16||numero==43||numero==46||numero==58){               /* //# BOMBA*/
            printf("\n# A BOMBA FOI ATIVADA");
            while(num>=0){
                Sleep(1000);
                system("cls");
                printf("# BOMBA ATIVA\n%i segundos",num);
                num-=1;
                final=1;
            }
            printf("\n\nBOMBA EXPLODIDA!\nPressione Qualquer tecla para continuar... ");
            getch();
        }
        else{
            if (numero==61||numero==27||numero==29||numero==31||
                numero==42||numero==41||numero==56){
                printf("\n UMA VIDA PERDIDA");
                getch();
                vidas--;
            }
            else{
                flag=0;
                for(i=0;i<7;i++){
                    for(j=0;j<8;j++){
                        if (campo[i][j] == numero){
                            printf("\n+1 PONTO !!\n");
                            getch();
                            pontos++;
                            flag=1;
                            break;
                        }
                    }
                    if(flag==1){
                        break;
                    }
                }
            }
        }
    }while(numero!=99 || vidas!=0 || pontos!=21 || final!=1 );
    system("cls");
    printf("\nFim de jogo ! ");
    printf("\n\npontos (%i)\tvidas (%d)",pontos,vidas);
    getch();
    return 0;
}

 

muito bom !!! mas não entendi como ele não deixa repetir ao colocar campo2[j] não entendi este cod ;\

 

  • Curtir 1
Postado

@Thales Muchante     ele não deixa repetir pois no vetor campo2  são armazenados os números que foram digitados , e ali onde insere o número também é feito uma verificação nesse vetor para saber se já tem esse número nesse vetor e tendo esse número a variável flag é setada e assim o loop se repete pedindo para digitar outro número .

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!