1
resposta

BUG - novo jogo não funciona

Olá, quando clico em novo jogo e chuto um número, o programa fala: o número é maior, e ao tentar aumentar o número mentem essa mesma mensagem, esgotando os números que posso tentar e não conseguindo ganhar o jogo.

Exemplo:

*Chuto número 3

*O programa exibe a mensagem: o número é maior tento do 3 até o 10

O programa segue exibindo a mensagem: o número é maior Conclusão: Errei algo no código e já tentei rever as aulas 3 vezes e não consigo corrigir o bug!

:c

let numeroSecreto = gerarNumeroAleatorio();

let tentativas = 1;

function exibirTextoNaTela(tag, texto) { let campo = document.querySelector(tag); campo.innerHTML = texto; } function exibirMensagemInicial( ){ exibirTextoNaTela("h1", "Jogo do número secreto"); exibirTextoNaTela("p", "Escolha um número entre 1 e 10"); } exibirMensagemInicial();

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 = " " } function reiniciarJogo() { numeroSecreto = gerarNumeroAleatorio limparCampo(); tentativas = 1 exibirMensagemInicial(); document.getElementById("reiniciar").setAttribute("disabled", true); }

1 resposta

Parece que você está enfrentando um problema em que as mensagens do seu jogo desaparecem ao adaptar a versão mais curta do código. Eu posso ajudar a revisar e corrigir o código para que ele funcione como esperado.

Ao olhar para o seu código, percebo algumas inconsistências que podem estar causando o problema:

  1. Funções de Exibição de Mensagens: Verifique se as funções exibirTextoNaTela estão bem definidas e que estão sendo fechadas corretamente. Pode ser que o encerramento das funções não esteja correto, o que poderia causar problemas na execução.

  2. Reinicialização do Jogo: Você tem duas funções reiniciarJogo definidas, o que pode causar confusão e sobreposição inesperada de comportamentos. Sugiro manter apenas uma versão da função, garantindo que ela esteja configurada corretamente para reiniciar o jogo como desejado.

  3. Manipulação do Campo de Entrada e Mensagens: Garanta que todas as mensagens sejam atualizadas corretamente no DOM e que o campo de entrada esteja sendo limpo corretamente após cada tentativa.

Aqui está uma versão revisada do seu código que pode resolver o problema:

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

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

function exibirMensagemInicial() {
        exibirTextoNaTela('h1', 'Jogo do número secreto');
        exibirTextoNaTela('p', 'Escolha um número entre 1 e 10');
}

exibirMensagemInicial();

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() {
        let chute = document.querySelector("input");
        chute.value = "";
}

function reiniciarJogo() {
        numeroSecreto = gerarNumeroAleatorio();
        tentativas = 1;
        limparCampo();
        exibirMensagemInicial();
        document.getElementById('reiniciar').setAttribute('disabled', true);
}

Esta versão do código garante que as funções estejam corretamente fechadas e organiza melhor a lógica de reinicialização do jogo. Se ainda tiver problemas, por favor, me informe para que possamos fazer mais ajustes.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software