Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Bug] Meu codigo esta apresentando um bug no número de tentativas

O meu código é do desafio do número secreto. Estava a rever o código e a fazer ajustes, mas há um bug que não consigo resolver. Quando introduzo o número secreto, em vez de aparecer o número correto de tentativas, aparece um número muito maior, como 1000 ou 3000, em vez da quantidade correta. Não sei qual é a causa desse bug.

alert('Boas vindas ao jogo do número secreto');
let numeroSecreto = 5;
console.log(numeroSecreto)
let chute;
let tentativas = 1;

// se chute for igual ao número secreto
while (chute != numeroSecreto) {
    chute = prompt('Escolha um número entre 1 e 10');
    if (chute == numeroSecreto) {
        break
    } else {
    if (chute > numeroSecreto) {
    alert(`O número secreto é menor que  ${chute}`);
    } else {
        alert(`O número secreto é maior que  ${chute}`);
    }
    tentativas++
    
}

}
let palavratentativa = tentativas > 1 ? 'tentativas' : 'tentativa'; 
alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} ${palavratentativa}.`);
1 resposta
solução!

Olá Rian! Como vai?

O problema pode estar relacionado ao tipo de dado que você está recebendo do prompt. O prompt sempre retorna uma string, então quando você compara chute com numeroSecreto, você está comparando uma string com um número. Isso pode causar comportamentos inesperados, especialmente se você estiver usando operadores como > ou <.

Para resolver isso, você pode converter o valor retornado pelo prompt em um número usando a função parseInt. Aqui está como você pode ajustar o seu código:

alert('Boas vindas ao jogo do número secreto');
let numeroSecreto = 5;
console.log(numeroSecreto)
let chute;
let tentativas = 1;

// se chute for igual ao número secreto
while (chute != numeroSecreto) {
    chute = parseInt(prompt('Escolha um número entre 1 e 10')); // Converte a entrada para um número
    if (chute == numeroSecreto) {
        break;
    } else {
        if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}`);
        } else {
            alert(`O número secreto é maior que ${chute}`);
        }
        tentativas++;
    }
}

let palavratentativa = tentativas > 1 ? 'tentativas' : 'tentativa'; 
alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} ${palavratentativa}.`);

Com essa modificação, o valor de chute será tratado como um número, o que deve resolver o problema com o número de tentativas.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.