Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

BUG | Número secreto não atualiza ao iniciar nova partida

Estou com um problema no meu jogo de número secreto. Quando um número aleatório é gerado, por exemplo, '4', e eu inicio uma nova partida clicando no botão "Novo Jogo", um novo número aleatório é gerado e armazenado no array, como '1'. No entanto, ao tentar adivinhar o novo número ('1'), o jogo não reconhece como correto. Apenas o primeiro número gerado ('4') continua sendo considerado como a resposta certa, mesmo após a geração de novos números. Ou seja, o jogo está sempre validando apenas o primeiro número gerado, em vez de atualizar corretamente a resposta para cada nova partida.

let listaDeNumerosSorteados = [];
let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;

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

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

mensagemIniciais();

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() {
    let numeroEscolhido = parseInt(Math.random() * 3 + 1);
    let quantidadeDeElementosNaLista = listaDeNumerosSorteados.length;

    if (quantidadeDeElementosNaLista == listaDeNumerosSorteados) {
        listaDeNumerosSorteados = [];
    }

    if (listaDeNumerosSorteados.includes(numeroEscolhido)) {
        return gerarNumeroAleatorio();
    } else {
        listaDeNumerosSorteados.push(numeroEscolhido);
        console.log(listaDeNumerosSorteados);
        return numeroEscolhido;
    }
}

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

function reiniciarJogo() {
    gerarNumeroAleatorio();
    mensagemIniciais();
    limparCampo();
    tentativas = 1;
    document.getElementById('reiniciar').setAttribute('disabled', true); 
}
1 resposta
solução!

Oi Ricardo, tudo bem? 😊

O problema no seu jogo ocorre porque a função reiniciarJogo() está gerando um novo número aleatório.

Mas não está atualizando a variável numeroSecreto com esse novo valor.

A função gerarNumeroAleatorio() agora retorna o número gerado.

Mas você não está usando esse retorno para atualizar o numeroSecreto.

Para corrigir isso, você precisa atribuir o valor de retorno da função gerarNumeroAleatorio() à variável numeroSecreto dentro da função reiniciarJogo().

Veja como deve ficar a função reiniciarJogo() corrigida:

function reiniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio(); // Atualiza o número secreto
    limparCampo();
    tentativas = 1;
    mensagemIniciais();
    document.getElementById('reiniciar').setAttribute('disabled', true); 
}

Dessa forma, toda vez que um novo jogo for iniciado.

O numeroSecreto será atualizado corretamente.

Garantindo que o jogo funcione como esperado. 😄

🎓 Para saber mais:

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