1
resposta

[Dúvida] A lista não está sendo guardada no console

Olá, estou quebrando a cabeça aqui pra conseguir resolver essa questão, sempre que rodo o código e verifico se está como o da aula ele não cria a lista e nem a reseta no console, se alguem puder me ajudar por favor.

let listaDeNumerosSorteados = [];
let numeroLimite = 20;
let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;
function gerarNumeroAleatorio() {
    let numeroEscolhido = parseInt(Math.random() * numeroLimite + 1);
    let quantidadeDeElementosNalista = listaDeNumerosSorteados.length;

    if (quantidadeDeElementosNalista == numeroLimite) {
        listaDeNumerosSorteados = [];
    }
        if (listaDeNumerosSorteados.includes(numeroEscolhido)){
        return gerarNumeroAleatorio();
    } else {
        listaDeNumerosSorteados.push(numeroEscolhido);
        console.log(listaDeNumerosSorteados);
        return numeroEscolhido;
    }
  
    }

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 de 1 a 20');
 }
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 do jogo secreto com ${tentativas} ${palavraTentativa}!`;
        exibirTextoNaTela('p', mensagemTentativas);
        document.getElementById('reiniciar').removeAttribute('disabled');  
    } else {
        exibirTextoNaTela('h1','ERRRRRROU!');
        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

Olá Gabriel! Tudo certo?

Parece que você está enfrentando um problema com a função gerarNumeroAleatorio() e o gerenciamento da lista listaDeNumerosSorteados. Vamos dar uma olhada no código e ver como podemos ajustá-lo.

Primeiro, notei que você tem duas definições da função gerarNumeroAleatorio(). Isso pode estar causando confusão no seu código, já que a segunda definição sobrescreve a primeira. Vamos corrigir isso e garantir que a função esteja correta e funcional.

Aqui está uma versão ajustada da função gerarNumeroAleatorio():

function gerarNumeroAleatorio() {
    let numeroEscolhido = parseInt(Math.random() * numeroLimite + 1);
    let quantidadeDeElementosNalista = listaDeNumerosSorteados.length;

    if (quantidadeDeElementosNalista == numeroLimite) {
        listaDeNumerosSorteados = [];
    }

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

Certifique-se de remover a segunda definição da função gerarNumeroAleatorio() que está retornando um número de 1 a 10, pois ela não está utilizando a variável numeroLimite corretamente.

Além disso, verifique se a função reiniciarJogo() está chamando gerarNumeroAleatorio() corretamente para redefinir o numeroSecreto e se a lista listaDeNumerosSorteados está sendo esvaziada quando necessário.

Espero ter ajudado e bons estudos!

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