Ir ao conteúdo
  • Cadastre-se

C Tem como eu aperfeiçoar e Se tem como o usuario não digitar o mesmo número até o


Thales Muchante

Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

@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
Link para o comentário
Compartilhar em outros sites

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
Link para o comentário
Compartilhar em outros sites

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

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

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!