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

[Dúvida] Função exibirMensagemInicial não está rodando corretamente

Pessoal, tudo bem?

Conseguem revisar meu código, por favor, e me ajudarem a entender por que a função exibirMensagemInicial não está funcionando como deveria?

O comportamento que está ocorrendo é o seguinte:

  • depois de criar a função exibirMensagemInicial e incluir dentro dela a função exibirTextoTela estou com problemas na exibição dessas mensagens;
  • quando o valor do chute é inferior ao do número secreto, a mensagem exibida na tela "O Número Secreto é maior" permanece constante, e não é possível mais receber a mensagem de acerto.

Obrigado

let numeroSecreto = gerarNumeroSecreto();
let numeroTentativas = 1;

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

function exibirMensagemInicial() {


exibirTextoTela('h1', 'Novo Jogo do Número Secreto');
exibirTextoTela('p', 'Escolha um número entre 1 e 10:');
}

exibirMensagemInicial();

function verificarChute() {
    let valorChute = document.querySelector('input').value;
    
    
    if (numeroSecreto == valorChute) {
        exibirTextoTela('h1', 'Parabéns!');
        let palavraTentativa = numeroTentativas > 1 ? 'tentativas' : 'tentativa';
        let mensagemTentativa = `Você acertou o Número Secreto com ${numeroTentativas} ${palavraTentativa}.`;
        
        exibirTextoTela('p', mensagemTentativa);
        document.getElementById('reiniciar').removeAttribute('disabled');
    } else if (numeroSecreto > valorChute) {
        exibirTextoTela('p', 'O Número Secreto é maior.');
    } else {
        exibirTextoTela('p', 'O Número Secreto é menor.');
    }
    numeroTentativas++;
    limparCampo();
    
}

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

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

function reiniciarJogo() {
    numeroSecreto = gerarNumeroSecreto;
    exibirMensagemInicial();
    limparCampo();
    numeroTentativas = 1;
    
}
2 respostas
solução!

Parece que há um pequeno problema no trecho onde você está reiniciando o jogo na função reiniciarJogo().

A linha numeroSecreto = gerarNumeroSecreto; está atribuindo a função gerarNumeroSecreto() à variável numeroSecreto, não chamando a função para gerar um novo número secreto. Para corrigir, você deve adicionar parênteses para chamar a função:

function reiniciarJogo() {
    numeroSecreto = gerarNumeroSecreto(); // Adicione os parênteses para chamar a função
    exibirMensagemInicial();
    limparCampo();
    numeroTentativas = 1;
}

Essa alteração garantirá que um novo número secreto seja gerado ao reiniciar o jogo. Isso deve resolver o problema que você está enfrentando.

Marcos, muito obrigado pela ajuda!

Realmente eu não estava atribuindo a função para a variável. Fiz essa correção e agora está rodando conforme deveria.

Abraço