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

[Bug] Código com erro

Hello pessoal! Tudo bem?

Bem, estou com uma enorme dificuldade no meu código.

Acontece que ao realizar o chute, ele diz que ou é menor ou maior, suponhamos que eu coloque 9 e diga que é maior, significa que o número secreto é 10 e que ao acertar, ele deve me trazer o texto "Acertou!", mas infelizmente ele não está retornando mais essa mensagem, ele retorna "o número secreto é maior ou menor!"

Podem, me ajudar, por favor?

let numeroSecreto = gerarNumeroAleatorio();
let tentativa = 1;

function exibirTextoNaTela (tag, texto) {
    let campo = document.querySelector(tag);
    campo.innerHTML = texto;
}

exibirTextoNaTela('h1','Jogo do Número Secreto');
exibirTextoNaTela('p','Escolha um número de 1 a 10');

function verificarChute() {
    let chute = document.querySelector('input').value
    if (chute == numeroSecreto) {
        let mensagemTentativa = `Você descobriu o número secreto com ${tentativa} ${palavraTentativa}!`
        let palavraTentativa = tentativa > 1 ? 'tentativas' : 'tentativa';
        exibirTextoNaTela('h1','Acertou!');
        exibirTextoNaTela('p', mensagemTentativa);
    } else if (chute < numeroSecreto) {
        exibirTextoNaTela('p','O Número Secreto é maior!');
    } else {
        exibirTextoNaTela('p','O Número Secreto é menor!');
    }
}   tentativa++;

function gerarNumeroAleatorio () {
    return parseInt (Math.random() * 10 + 1);
}

2 respostas
solução!

Problema na Exibição da Mensagem de Acerto - Número Secreto em JavaScript

Parece que há um problema de lógica no código. No momento que você tá verificando se o chute é menor que o número secreto, está utilizando um else if, o que significa que o bloco de código dentro desse ramo só será executado se o chute não for igual ao número secreto e também não for menor. Ou seja, se o chute for maior, ele entrará no bloco else, que exibe a mensagem "O número secreto é menor", mas não tem nada no código para tratar o caso de acerto. Isso significa que se o chute for igual ao número secreto, a mensagem "Acertou!" não vai aparecer.

• Alterações no código

let numeroSecreto = gerarNumeroAleatorio();
let tentativa = 1;

function exibirTextoNaTela(tag, texto) {
    let campo = document.querySelector(tag);
    campo.innerHTML = texto;
}

exibirTextoNaTela('h1', 'Jogo do número secreto');
exibirTextoNaTela('p', 'Escolha um número de 1 a 10');

function verificarChute() {
    let chute = document.querySelector('input').value;
    let palavraTentativa = tentativa > 1 ? 'tentativas' : 'tentativa';

    if (chute == numeroSecreto) {
        let mensagemTentativa = `Você descobriu o número secreto com ${tentativa} ${palavraTentativa}!`;
        exibirTextoNaTela('h1', 'Acertou!');
        exibirTextoNaTela('p', mensagemTentativa);
    } else if (chute < numeroSecreto) {
        exibirTextoNaTela('p', 'O número secreto é maior!');
    } else {
        exibirTextoNaTela('p', 'O número secreto é menor!');
    }

    tentativa++;
}

function gerarNumeroAleatorio() {
    return parseInt(Math.random() * 10 + 1);
}

Com essas alterações, a mensagem "Acertou!" vai aparecer corretamente quando o chute for igual ao número secreto. Além disso, movi a incrementação da variável tentativa pra fora da estrutura condicional pra garantir que ela realmente seja incrementada independentemente do resultado do chute.

Valeu Pamela!