1
resposta

[Bug] Quando clico em "Novo Jogo" , não funciona. Atributos não emovidos.

let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 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 entre 1 e 10');

function verificarChute() {
    let chute = document.querySelector('input').value;
    
    if (chute == numeroSecreto) {
        exibirTextonaTela('h1', 'Acertou!');
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        let mensagemTentativas = `Você descobriu o número secreto com ${tentativas} ${palavraTentativa}!`;
        exibirTextonaTela('p', mensagemTentativas);
        document.getElementById('reiniciar').removeAttribute('disabled');
        } else {
                if (chute > numeroSecreto) {
                        exibirTextonaTela('p', 'O número secreto é menor');
                } else {
                        exibirTextonaTela('p', 'O número secreto é maior');
                }
                tentativas++;
                limparCampo();
        } 
        
}

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

function limparCampo() {
        chute = document.querySelector('input');
        chute.value = '';
}
1 resposta

Oi Roger,

Percebi que você está enfrentando um problema ao reiniciar o jogo, onde os atributos não são redefinidos. 🤔

O problema está na forma como você está reiniciando o jogo. A variável numeroSecreto e tentativas são declaradas fora das funções, o que faz com que elas não sejam reiniciadas quando você clica no botão "Novo Jogo".

Para corrigir isso, você precisa criar uma função para iniciar o jogo, e essa função deve ser chamada quando a página carregar e quando o botão "Novo Jogo" for clicado. 💡

Veja como você pode fazer:

let numeroSecreto;
let tentativas;

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

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

function limparCampo() {
    chute = document.querySelector('input');
    chute.value = '';
}

function iniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio();
    tentativas = 1;
    exibirTextonaTela('h1', 'Jogo do número secreto');
    exibirTextonaTela('p', 'Escolha um número entre 1 e 10');
    document.getElementById('reiniciar').setAttribute('disabled', true);
}

function verificarChute() {
    let chute = document.querySelector('input').value;
    
    if (chute == numeroSecreto) {
        exibirTextonaTela('h1', 'Acertou!');
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        let mensagemTentativas = `Você descobriu o número secreto com ${tentativas} ${palavraTentativa}!`;
        exibirTextonaTela('p', mensagemTentativas);
        document.getElementById('reiniciar').removeAttribute('disabled');
    } else {
        if (chute > numeroSecreto) {
            exibirTextonaTela('p', 'O número secreto é menor');
        } else {
            exibirTextonaTela('p', 'O número secreto é maior');
        }
        tentativas++;
        limparCampo();
    }
}

iniciarJogo();

No código acima, a função iniciarJogo é responsável por definir os valores iniciais do jogo. 👍

E para o botão "Novo Jogo" funcionar, você precisa adicionar um evento de clique que chama a função iniciarJogo:

<button onclick="iniciarJogo()" id="reiniciar" disabled>Novo Jogo</button>

🎓 Para saber mais: Eventos de clique em JavaScript.

Espero que isso ajude a resolver o seu problema! 😊

tux matrix Caso este post o tenha ajudado, marque-o como solucionado ☑️. Bons Estudos! 🤓