1
resposta

Deu algo no meu projeto final do curso de introdução C

nesse projeto de jogo do final do curso de Introdução C, era para fazer um jogo que de acordo com o nível de dificulade o numero de tentativas muda, so que no meu, independente do nivel de dificuldade escolhido as tentativas continuam infinitas.

#include <stdio.h>
#include <locale.h>
#include <time.h>
#include <stdlib.h>

int main(){
    setlocale(LC_ALL, "");

    int chute;
    int tentativas = 0;

    int segundos = time(0);
    srand(segundos);

    int numerogrande = rand();
    int numerosecreto = numerogrande % 100;

    int dificuldade;
    int limite;
    int bug;

    int pontos = 1000;

    printf("*****************************\n");
    printf("*****JOGO DE ADIVINHAÇÃO*****\n");
    printf("*****************************\n");

    printf("Seja bem-vindo ao meu jogo de adivinhação.\n\n");
    printf("Será sorteado um número de 0 a 99! Você consegue acertar qual?\n");

    printf("Escolha o nível de dificuldade:\n");
    printf("(Escolha, aperte enter e depois repita o processo para confirmar).\n");
    printf("(1)FÁCIL (2)MÉDIO (3)DIFÍCIL\n");
    scanf("%d\n", &dificuldade);

    if (dificuldade == 1){
        int limite = 20;
        printf("Você tem %d tentativas!\n", limite);
    }

    if (dificuldade == 2){

        int limite = 15;
        printf("Você tem %d tentativas!\n", limite);
    }

    if (dificuldade == 3){


        int limite = 10;
        printf("Você tem %d tentativas!\n", limite);
    }



    printf("Mas quanto mais tentativas e quanto mais longe seu chute for do numero secreto,\n");
    printf("Você vai perdendo mais pontos.\n\n");

    printf("Vamos lá! Boa sorte!\n\n");
    for(int i = 1; i<= limite; i++){

        if(tentativas==0){
            scanf("%d", &bug);
            tentativas++;
        }
            if (tentativas>0){
        printf("TENTATIVA Nº %d\n", tentativas);
        printf("Qual é o seu chute? \n");

        scanf("%d", &chute);
        printf("Seu chute foi %d, será que está certo?\n", chute);
        printf("...");

        if(chute<0){
            printf("ERRO! Números negativos não são permitidos! tente novamente!\n");
            tentativas--;
            continue;
        }
        if(chute == numerosecreto){
            printf("PARABÉNS VOCÊ ACERTOU!!!\n\n");
        printf("             OOOOOOOOOOO               \n");
        printf("         OOOOOOOOOOOOOOOOOOO           \n");
        printf("      OOOOOO  OOOOOOOOO  OOOOOO        \n");
        printf("    OOOOOO      OOOOO      OOOOOO      \n");
        printf("  OOOOOOOO  #   OOOOO  #   OOOOOOOO    \n");
        printf("  OOOOOOOOO    OOOOOOO    OOOOOOOOO   \n");
        printf(" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  \n");
        printf(" OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  \n");
        printf(" OOO  OOOOOOOOOOOOOOOOOOOOOOOOO  OOO  \n");
        printf("  OOO  OOOOOOOOOOOOOOOOOOOOOOO  OOO   \n");
        printf("   OOO   OOOOOOOOOOOOOOOOOOOO  OOO    \n");
        printf("     OOOO   OOOOOOOOOOOOOOO   OOO     \n");
        printf("      OOOOOO   OOOOOOOOO   OOOOO      \n");
        printf("         OOOOOO         OOOOO         \n");
        printf("             OOOOOOOOOOOO              \n\n");
        printf("Você acertou em %d tentativas!", tentativas);
            break;
        }
        else{
            if(chute>numerosecreto){
                printf("Você errou!!!Tente um numero menor!\n\n");
            }
            if(chute<numerosecreto){
                printf("Você errou!!! Tente um número maior!\n\n");
            }
        }

        tentativas++;
        if (tentativas>= limite){
            printf("VOCÊ PERDEU!");
            break;
        }
        int pontosperdidos = abs((chute-numerosecreto)/2);
        pontos= pontos-pontosperdidos;
        }

    }
    printf("FIM DE JOGO!\n\n");

    printf("Seu total de pontos foi:\n");
    printf("*********\n");
    printf("***%d***\n",pontos);
    printf("*********\n\n");
    printf("ATÉ A PRÓXIMA!!!");
}

Obs.: a variável bug é por causa de um pequeno bug q tinha na hora de escolher a dificuldade_

1 resposta

Oi Juliana, tudo bem?

Percebi que você está criando novamente a variável dentro dos ifs que verificam o nível de dificuldade:

if (dificuldade == 1){
        int limite = 20; // criando aqui
        printf("Você tem %d tentativas!\n", limite);
    }

    ...

Isso ocorre sempre que você escreve o tipo da variável antes do nome dela (int). E como está dentro de um if logo depois das chaves do if essa variável não existe mais.

Você já está criando ela no começo do código, neste trecho:

  int dificuldade;
    int limite;
    int bug;

daí é só chamar ela nos ifs :) (sem o int):

 if (dificuldade == 1){
        limite = 20;
        printf("Você tem %d tentativas!\n", limite);
    }

    if (dificuldade == 2){
        limite = 15;
        printf("Você tem %d tentativas!\n", limite);
    }

    if (dificuldade == 3){
        limite = 10;
        printf("Você tem %d tentativas!\n", limite);
    }

Imagino que isso deve resolver... Se tiver mais problemas ou dúvidas avisa aqui pra gente. ;)

Abraço!