1
resposta

Dúvida - jogo não aceita novo chute

Ocorreu o seguinte: Meu código está exatamente igual ao mostrado no vídeo, porém não permite um segundo chute. Utilizei IA para verificar se havia algum erro, porém não apontou nada. Quando informei a IA que o problema era não aceitar novos chutes, me foi recomendado a adicionar document.querySelector('input').value = ''; para limpar o campo sempre que eu chutasse, e isto deu certo. Porém esta linha de código apenas limpa o campo, não influencia na lógica do meu jogo.
Então por que o de vocês deu certo sem essa linha, e o meu não?
Não consigo entender onde está o problema no código.

Meu código:

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

function exibirTextoNaTela(tag, texto) { //A função recebe dois parâmetros:
//tag → qual elemento do HTML queremos alterar
//texto → o que vai aparecer na tela.
    let campo = document.querySelector(tag); //procura um elemento no HTML. Esse elemento encontrado é guardado na variável campo.
    campo.innerHTML = texto; //Então essa linha troca o texto que está dentro do elemento encontrado.
}

exibirTextoNaTela('h1', 'Jogo Secreto'); //Procura <h1> e Coloca dentro dele: "Jogo Secreto"
exibirTextoNaTela('p', 'Escolha um número entre 1 e 10'); // Procura <p> e Coloca dentro dele: "Escolha um número entre 1 e 100"

function verificarChute() {
    let chute = Number(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);
    } else { 
        if (chute > numeroSecreto) {
            exibirTextoNaTela("p", "O número secreto é menor que o chute!");
        } else {
            exibirTextoNaTela("p", "O número secreto é maior que o chute!");
        }
        //tentativas = tentativas + 1;
        tentativas++;
        document.querySelector('input').value = '';
    }
}

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

Olá, Sabrina! Tudo bem?

A linha document.querySelector('input').value = ''; realmente serve apenas para limpar o campo de entrada após cada chute, mas isso não deveria afetar a lógica do jogo em si.

No entanto, uma possível razão para o seu jogo não aceitar novos chutes pode estar relacionada ao evento que dispara a função verificarChute(). Certifique-se de que a função está sendo chamada corretamente após cada chute, por exemplo, através de um botão que o usuário clica após inserir o número.

Aqui está um exemplo de como você poderia configurar isso no HTML:

<input type="number" id="chute" placeholder="Digite seu chute">
<button onclick="verificarChute()">Chutar</button>

Com isso, toda vez que o botão for clicado, a função verificarChute() será chamada, permitindo que o usuário faça um novo chute. Além disso, como você já está limpando o campo de entrada, o usuário poderá digitar um novo número sem problemas.

Espero que essa sugestão ajude a resolver o problema. Se o problema persistir, pode ser interessante verificar se há algum erro no console do navegador que possa estar interferindo no funcionamento do jogo.

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