3
respostas

no meu código quando eu ganho aparece fim de jogo e vc perdeu ja procurei porém não achei o erro

#include <stdio.h>

#include <locale.h>

#include <stdlib.h>

#include <time.h> // para incluir time data hora

int main(){ // setlacale é uma biblioteca para acentuação para o portugues setlocale(LC_ALL, "Portuguese");

                                                            // imprimindo o cabeçalho 
    printf("******************************************\n");
    printf("* Bem vindo ao nosso jogo de adivinhação *\n");
    printf("******************************************\n");
    int segundos = time(0);
    srand(segundos);  // srand: fazem com que a função matemática sempre devolva números distintos;

    int numerogrande =rand(); // rand é pseudo-randômica e necessita de uma operação matemática para ser executada da maneira que queremos;

    int numerosecreto = numerogrande % 100; // (%)da o resto da divisão
    int chute;
    int tentativas=1;

    double pontos = 1000;

    int acertou=0;

    int nivel;
        printf("Em qual nivel deseja jogar?\n");
        printf("nivel(1)nivel(2)nivel(3)\n\n" );
        printf("Escolha:");
        scanf("%d",&nivel);

    int numerodetentativas;
    switch(nivel){
        case 1:
            numerodetentativas =20;
            break;

        case 2:
            numerodetentativas=15;
        break;

        default: 
        numerodetentativas=6;
        break;
    }

    for(int i=1;i<=numerodetentativas;i++){

        printf("tentativas %d\n",tentativas);
        printf("Qual é seu chute? ");

        scanf("%d", &chute);                            // %d é p/chamar a variavel q deseja e &, p/colocar a variavel q eu quero
        printf("Seu Chute foi %d\n", chute);

    if(chute <0){
        printf("você não pode colocar numero menor que zero\n");

        continue;                        // faz com q o cod passe para a linha de baixo 
 }

    int acertou = chute == numerosecreto;
    int maior = chute > numerosecreto;

        if(acertou ){     

            break;                                 // p/ se chegar nessa condição encerre e não vai p/as proximas condições
    }
        else if (maior){
        printf("seu numero foi maior que o numero secreto\n");
        }

        else{
            printf("seu numero foi menor que numero secreto\n");

        }
        tentativas++;                                     // ++ é msma coisa q tentativas = tentativas +1;
        double pontosperdidos = abs(chute -numerosecreto)/(double)2;             // é entre () cast é converter 2 inteiro em um double ou decimal ou vice versa.
        pontos =pontos - pontosperdidos;
                            // abs é uma função da biblioteca stdlib.h para inverter numeros negativados.
    }
        printf("FIM DE JOGO !\n");

    if(acertou ){
        printf("Você GANHOU !\n");
        printf("\nVocê Acertou em %d Tentativas \n",tentativas);
        printf("Total de Pontos: %.2f\n",pontos);                        // %.2f é definir a quantidade de casas decimal que eu quero q apareça.

    }
    else{
        printf("Você PERDEU, Tente Novamente!");
    }        

}

3 respostas

No início do seu código você está declarando a variável acertou assim:

int acertou=0;

Quando você vai validar se a pessoa acertou o chute você declara novamente.

int acertou = chute == numerosecreto;

Se você tirar a segunda declaração e deixar seu código dessa forma ele funcionará.

acertou = (chute == numerosecreto);

muito obrigado !!

realmente não me atentei a esse detalhe

Se possível coloque o fórum como resolvido para me ajudar a pontuar.