Utilizei a estrutura de "do... while", fazendo todas as verificações e mensagens ao usuário dentro dela. A cada execução do programa é "sorteado" um intervalo diferente para o jogo, que é informado ao usuário antes de seu "chute". O valor do limite superior deste intervalo por sua vez é utilizado para o cálculo do "numero pensado". Além disso, o valor digitado pelo usuário sofre uma "verificação" para garantir que esteja dentro dos limites aceitáveis: maior ou igual a 0 e menor ou igual ao limite aleatório (que estará sempre contido no intervalo [1, 101]). Por fim, para uma melhor UX, utilizei "alert()" no lugar de "document.write()".
<meta charset="UTF-8" />
<script>
function pulaLinha() {
document.write("<br><br>");
}
function mostra(texto) {
alert(texto);
pulaLinha();
}
function sorteiaNumero(n) {
var numeroSorteado = Math.round(Math.random() * n);
return numeroSorteado;
}
var numeroLimite = Math.round(Math.random() * 100+1);
console.log("Limite:" + numeroLimite);
var numeroPensado = sorteiaNumero(numeroLimite);
console.log("Pensado:" + numeroPensado);
do {
var chute = parseInt(prompt("Digite um número entre 0 e " + numeroLimite));
console.log("Chute: " + chute);
if (chute >= 0 && chute <= numeroLimite) {
if (chute < numeroPensado) {
mostra("Você errou! Seu chute foi MENOR do que o número pensado!");
} else if (chute > numeroPensado) {
mostra("Você errou! Seu chute foi MAIOR do que o número pensado!");
} else {
mostra("Parabéns! Você acertou o número pensado: " + numeroPensado);
}
} else {
mostra(
"O número deve estar compreendido entre 0 e " + numeroLimite + "!"
);
}
} while (chute != numeroPensado);
console.log("FIM");
</script>