0
respostas

Dúvida na finalização do jogo - sobre rand()

Tive uma dúvida com relação ao time.

Meu jogo parece não possuir um número fixo a cada tentativa, pois digitando seguidamente ele me dá mensagem de que está abaixo ou acima do valor e nunca atinge a condição de acerto.

Vou colocar o código pra ver se alguém pode me ajudar, ignorem as palhaçadas por favor, rs.

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

int main(){

    //cabeçalho

    printf("        ***************************\n");
    printf("        * Bem vindo ao NOSSO jogo *\n");
    printf("        ***************************\n");

    printf("                                        \n");
    printf("                    ,@,                 \n");
    printf("                   ,@@@,                \n");
    printf("                  ,@@@@@,               \n");
    printf("           `@@@@@@@@@@@@@@@@@@@`        \n");
    printf("             `@@@@@@@@@@@@@@@`          \n");
    printf("               `@@@@@@@@@@@`            \n");
    printf("              ,@@@@@@`@@@@@@,           \n");
    printf("              @@@@`     `@@@@           \n");
    printf("             ;@`           `@;          \n");
    printf("               _   _   _   _            \n");
    printf("              (   (   (   |_)           \n");
    printf("               ~   ~   ~  |             \n\n");

    srand(time(0));
    int numerosecreto = rand() % 100;
    int chute;
    int acertou = (chute == numerosecreto);
    int nivel;
    int numerodetentativas;

    double pontos = 1000;



    //definição de nível

    printf("Qual o nível de dificuldade?\n");
    printf("(1) Fácil (2) Médio (3) Difícil\n\n");
    printf("Escolha:");
    scanf("%d", &nivel);

    switch(nivel){

        case 1:
            numerodetentativas = 20;
            break;

        case 2: 
            numerodetentativas = 15;
            break;

        default:
            numerodetentativas = 6;
            break;
    }

    //loop do jogo

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

        int maior = chute > numerosecreto;
        int tentativasfaltantes = numerodetentativas -i;

        printf("Chute um número\n");
        scanf("%d", &chute);
        printf("Seu chute foi %d, você tem %d tentativas\n", chute, tentativasfaltantes);

        //numeros negativos

     if (chute < 0){
            printf("Números negativos não valem.\n");
            continue;
        }
        //verifica acerto, maior ou menor.
    if (acertou){
            break;
        }else if(maior){
            printf("Seu chute foi acima do número secreto\n");
        } 
        else {
            printf("Seu chute foi abaixo do número secreto\n");
        }

        //Placar
        double pontosperdidos = abs (chute - numerosecreto)/(double) 2;
        pontos = pontos - pontosperdidos;

    }

    //vitória
    if(acertou){

    printf("        (@@@@@_                                                 \n");
    printf("        |     @@                                                \n");
    printf(" |||    ) ~/~ @@               Greetings from Comrade Stalin    \n");
    printf(" |  '   [  ^  ]                                                 \n");
    printf(" \\__/\\   `----                                                \n");
    printf("  \\   \\~~~     ~~~~\\                                         \n");
    printf(" ----------------------------                                   \n\n");
    printf("Acertô mizerávi! Bora outra?\n");
    printf("Você acertou em %d tentativas. Tente fazer melhor!\n", numerodetentativas);
    printf("Você fez %.1f pontos!\n", pontos);

    }
    //derrota
    else{
        printf("Você já foi melhor. Tente novamente\n");
        printf("        |   ,                                                   \n");
        printf("    | O /                 O                                     \n");
        printf("    |--\\            __---=/\\>                                 \n");    
        printf("      / \\                __/__                                  \n");
        printf("      \\  \\               \\    '     GAME OVER CAPITALIST!    \n\n");
    }

}  

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software