Paulo,
Mesmo com aquele erro, que ao que parece é um erro relacionado com a perda de dados por problemas de conversão, o código compila e roda sem problemas, gerando um número aleatório a cada vez que é compilado.
Acredito que não estou tendo problemas com essa perda de dados porque declarei a variável como sendo long, quando na verdade ela é um int.
O código ficou assim:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int tentativas = 0, chute;
double pontos_finais, pontos_perdidos = 0, pontos_iniciais = 10000;
long num_secreto;
int main ()
{
srand(time(0));
num_secreto = rand() % 101;
printf("Olá, bem-vindo! Você está no jogo de adivinhação desenvolvido por Guilherme Palazzo. \n\n");
printf("A regra é simples. Você irá chutar números para adivinhar um número aleatório gerado pelo computador. \n\n");
printf("Você começará com 10000 pontos. Cada vez que errar, perderá os pontos da seguinte forma: Os pontos que você possui no início daquela rodada, subtraído da metade da diferença entre o número que escolheu e o número secreto. Caso acerte de primeira, conseguirá manter os 10000 pontos iniciais. \nO jogo terminar quando você acertar ou quando esgotar a quantidade de pontos que possui. \n\nBoa sorte! \n\n");
while (1)
{
tentativas += 1;
pontos_finais = pontos_iniciais;
printf("\nVocê está na sua %.0dª tentativa \n", tentativas);
printf("Chute um número natural: \n");
scanf("%d", &chute);
if ( chute > 0 )
{
if ( chute == num_secreto )
{
if ( tentativas == 1)
{
printf("\nParabéns, você acertou na %.0dª tentativa! \nO número secreto é %.0ld. \n", tentativas, num_secreto);
printf("Como combinado, você manteve seus %.1f pontos. \n", pontos_iniciais);
break;
}
else
{
printf("\nParabéns, você acertou na %.0dª tentativa! \nO número secreto é %.0ld. \n", tentativas, num_secreto);
printf("Você terminou o jogo com %.1f pontos. \n", pontos_finais);
break;
}
}
else if ( chute > num_secreto )
{
pontos_perdidos = labs(chute - num_secreto) / (double)2;
pontos_iniciais = pontos_iniciais - pontos_perdidos;
printf("O número %.0d é maior que o número secreto. \n\n", chute);
if (pontos_iniciais < 0)
{
printf("O número secreto é: %.0ld. \nVocê chutou o valor %.0d e, após as sucessivas subtrações de pontos, agora possui %.1f pontos \n", num_secreto, chute, pontos_iniciais);
printf("De acordo com nossas regras de subtração de pontos, você foi desclassificado. \nFim de jogo.\n");
break;
}
else
{
continue;
}
}
else
{
pontos_perdidos = labs(chute - num_secreto) / (double)2;
pontos_iniciais = pontos_iniciais - pontos_perdidos;
printf("O numero %.0d é menor que o número secreto. \n\n", chute);
continue;
}
}
else
{
printf("Você só pode informar números naturais, ou seja, maiores que zero. \nInsira o número novamente. \n\n");
tentativas--;
continue;
}
}
}
Obrigado pela sua disponibilidade.
Boa noite!