1
resposta

Continuando o jogo de adivinhação

observe o seguinte código: #include <stdio.h>

#include <stdlib.h>

#include <time.h>



int main(){

    // imprime o cabecalho do nosso jogo

    printf("******************************************\n");

    printf("* Bem vindo ao nosso jogo de adivinhacao *\n"); 

    printf("******************************************\n");



    // A função time(0) retorna o número de segundos desde 1970.

    // Usar esse número como semente garante que os números gerados sejam diferentes a cada execução.

    int segundos = time(0);

    

    // A função srand() inicializa o gerador de números aleatórios.

    // A 'semente' (segundos) é o valor de partida para a geração.

    srand(segundos);



    int numerogrande = rand();



    // int numerosecreto = 42; Variável Inicializada: É aquela que recebe um valor no momento da sua declaração. No exemplo int numerosecreto = 42;, a variável numerosecreto é do tipo inteiro e recebe o valor 42 no momento em que é criada.



    int chute; // Variável Não Inicializada: É aquela que é declarada, mas não recebe um valor inicial. No exemplo int chute;, a variável chute é do tipo inteiro, mas não recebe nenhum valor inicial.



    int numerosecreto = numerogrande % 100; // essa linha de código pega um número grande (numerogrande) e usa o resto da divisão por 100 para criar um número secreto (numerosecreto) que está sempre entre 0 e 99.



    int tentativas = 1;



    double pontos = 1000;



        while (1) {        



        printf("Tentativa %d\n", tentativas);

        printf("Qual é o seu chute? ");

        scanf("%d", &chute);

        printf("Seu chute foi %d\n", chute);



        if (chute < 0) {

            printf("Você não pode chutar números negativos!\n");

            continue; // O continue serve para que o i++ começe a testar o código novamente, logo, pulando todo o código abaixo de if (chute < 0), caso, a condição seja atendida

        }



        int acertou = (chute == numerosecreto);

        int maior = (chute > numerosecreto);



        if (acertou) {

            printf("Parabéns! Você acertou!\n");

            printf("Jogue de novo, você é um bom jogador!\n");



            break;

        } 



        else if (maior) {

            printf("Seu chute foi maior que o número secreto\n");

        } 

            

        else {

            printf("Seu chute foi menor que o número secreto\n");

        }



        tentativas++;



        double pontosperdidos = abs(chute - numerosecreto) / (double)2; // Apenas pelo fato de ter adicionado um .0 no dois, o compilador já vai entender que está diante de um double, paralelamente, deve-se entender que o compilador lê o código da direita para a esquerda, resolvendo, antes, primeiramente (chute - numerosecreto) / 2 e depois declarando a variável, armazenando seu resultado. Agora, devido ao 2.0 o compilador vai enteder que está lidando com um double em um primeiro momento.



        pontos = pontos - pontosperdidos;



        }

        printf("Fim de jogo!\n");

        printf("Você acertou em %d tentativas!\n", tentativas);

        printf("Total de pontos: %.1f\n", pontos); // A máscara %.1f é utilizada para exibir apenas uma casa decimal e %.2f é utilizada para exibir duas casas decimais.

}
1 resposta

Oi, Guilherme! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Gostei de ver como você estruturou as tentativas e o cálculo de pontos perdidos com double. Isso deixa o jogo mais dinâmico e traz uma boa experiência para quem joga.

Continue firme nos estudos.

Conteúdos relacionados
Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!