1
resposta

variável do numero secreto não atualiza , quando ativo novo jogo continua o mesmo número

let listaNumerosSorteados = [] let numeroSecreto = gerarNumerosAleatorios() tentativas = 1

function gerarNumerosAleatorios() { let numeroEscolhido = parseInt(Math.random()*4 +1) if (listaNumerosSorteados.length == 4) { listaNumerosSorteados = [] } if(listaNumerosSorteados.includes(numeroEscolhido)){ return gerarNumerosAleatorios() } else{ listaNumerosSorteados.push(numeroEscolhido) console.log(listaNumerosSorteados) return numeroEscolhido } } inserirTexto('h1','jogo venancio') inserirTexto('p','escolha um número de 1 a 100')

function inserirTexto(tag,text) { let campo = document.querySelector(tag) campo.innerHTML = text

}

function limpaCampo() { let campo = document.querySelector('input') campo.value = ''

}

function reiniciarJogo() { let numeroSecreto = gerarNumerosAleatorios(); limpaCampo(); tentativas = 1; inserirTexto('h1','jogo venancio') inserirTexto('p','escolha um número de 1 a 100') document.getElementById('reiniciar').setAttribute('disabled', true) }

function verificarChute() {

let chute = document.querySelector('input').value
if (chute == numeroSecreto) {
    inserirTexto('h1', 'acertou')
     
    let palavraTentativa = tentativas >1 ? 'tentativas':'tentativa'
    let mensagemTentativa = `você descrobriu o número com ${tentativas} ${palavraTentativa}`
    inserirTexto('p', mensagemTentativa)
    document.getElementById('reiniciar').removeAttribute('disabled')
    limpaCampo()

    
} else{
    if (chute > numeroSecreto){
        inserirTexto('p', 'o número aleatório é menor que o chute')
    } else {
        inserirTexto('p','o número aleatório é maior que o chute')
    }
    tentativas ++
    limpaCampo()

}

}

1 resposta

Boa noite, Vinícius. Tudo bem?

Eu tive um problema parecido e tive essa resposta:

"O problema está acontecendo devido à forma como a variável numeroSecreto é tratada ao reiniciar o jogo, pois estamos redefinindo a variável localmente, dentro da função reiniciarJogo(), dessa forma, não estamos afetando a variável numeroSecreto que está definida no escopo global (no inicio do código). Isso significa que, embora seja gerado um novo número aleatório e atribuído a uma nova variável local numeroSecreto dentro de reiniciarJogo(), a variável global numeroSecreto usada na função verificarChute() não é atualizada.

Porém para resolvermos o problema basta retirarmos o let que antecede numeroSecreto na função reiniciarJogo(), pois assim atualizaremos a variável global numeroSecreto e não redefiniremos a variável apenas localmente, deixando a nossa função da seguinte forma:

function reiniciarJogo() { numeroSecreto = gerarNumeroAleatorio(); // Atualiza a variável global limparCampo(); tentativas = 1; exibirMensagemInicial(); document.getElementById('reiniciar').setAttribute('disabled', true); }"

No seu caso, acredito que você também tenha que alterar a função limpar campo para:

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

Espero que dê certo. Abraços.