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