Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

[Bug] Erro no número aleatório.

Fiz o código conforme descrito na aula, mas ao inserir o meu código começou a apresentar bug. Ele não mostra o número secreto no console e a contagem é de 1 a 100 e quando coloco no prompt, diz que o número é maior que 100.

Podem, por gentileza, me ajudar?

alert('Boas Vindas ao Jogo do Número Secreto!');
let numeroSecreto = parseInt(Math.random() * 100 + 1);
console.log(numeroSecreto);

let chute;
let tentativas = 1;
// while (enquanto) o chute não for igual ao número secreto, o jogo ficará pedindo o valor em loop até acertar.
while (chute != numeroSecreto) {
    chute = prompt('Digite um número de 1 a 100');
    if (chute == numeroSecreto){
        break;
    } else {
        if (chute > numeroSecreto){
            alert(`O número secreto é maior que ${chute}!`);
        } else {
            alert(`O número secreto é menor que ${chute}!`);
        }
    }
    //tentativas = tentativas +1;
    tentativas++
}

let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
alert(`Parabéns! Você acertou o número secreto ${numeroSecreto} com ${tentativas} ${palavraTentativa}.`);
4 respostas

Olá Shara! Aparentemente não existe nada de errado no seu console.log(numeroSecreto), o que pode ser que está acontecendo é de o script ser executado antes que a saída do console seja totalmente exibida. Se você verificar na segunda execução o valor já exibido corretamente no console.

Para corrigir esse problema você pode adicionar um setTimeout que ele fará com que a execução aguarde um pouco e assim será apresentado o valor de console.log(numeroSecreto).

Você também precisa corrigir sua validação if que parece estar com o sinal de maior trocado, mas vou lhe fornecer o código corrigido para que você possa analisar. Abraços

alert('Boas Vindas ao Jogo do Número Secreto!');
    let numeroSecreto = parseInt(Math.random() * 100 + 1);
    console.log(numeroSecreto);

    let chute;
    let tentativas = 1;
    
    setTimeout(function() {
        // while (enquanto) o chute não for igual ao número secreto, o jogo ficará pedindo o valor em loop até acertar.
        while (chute != numeroSecreto) {
            chute = prompt('Digite um número de 1 a 100');
            if (chute == numeroSecreto){
                break;
            } else {
                if (chute > numeroSecreto){
                    alert(`O número secreto é maior que ${chute}!`);
                } else {
                    alert(`O número secreto é menor que ${chute}!`);
                }
            }
            //tentativas = tentativas +1;
            tentativas++
        }

        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        alert(`Parabéns! Você acertou o número secreto ${numeroSecreto} com ${tentativas} ${palavraTentativa}.`);
    }, 100)

Olá, não identifiquei o motivo de não exibir o numeroSecreto, mas percebi que a sua condição no if está invertida, você pode corrigir invertendo o sinal de > para < ou pode também só trocar o alert do if pelo do else nesse trecho:

if (chute > numeroSecreto){
    alert(`O número secreto é maior que ${chute}!`)
} else {
    alert(`O número secreto é menor que ${chute}!`);
}
solução!

Obrigada pessoal! Eu fiz a correção conforme informado por vocês, mas ainda continuava com erro, então eu perguntei ao chatgpt também e ela mesma disse que o código estava correto, havia apenas um problema na parte do chute abaixo do primeiro prompt. Ela me sugeriu colocar o chute = parseInt(chute); para que assim o código leia a entrada como number e não string, e depois que modifiquei isso e o sinal de > para < o código voltou ao normal.

Valeu pela ajuda!

while (chute != numeroSecreto) {
    chute = prompt('Digite um número de 1 a 100');
    chute = parseInt(chute);

    if (chute == numeroSecreto){
        break;
    } else {
        if (chute < numeroSecreto){
            alert(`O número secreto é maior que ${chute}!`);
        } else {
            alert(`O número secreto é menor que ${chute}!`);
        }
    }
    //tentativas = tentativas +1;
    tentativas++

Show Shara, parabéns por resolver!