2
respostas

[Dúvida] Erro na sintaxe

No meu código não aparece a lista dos números sorteados, só aparece os números que eu chutei

let listaDeNumerosSorteados = [];
let numeroSecreto = gerarNumeroAleatorio(); //Variavel do número secreto e acrescentou a função pra gerar o número aleatório
let tentativas = 1; // Variavel pra contar o número de tentativas
function exibirTextoNaTela(tag, texto){ //Função pra escrever na tela
    let campo = document.querySelector(tag); //Variavel campo pra mudar a tag
    campo.innerHTML = texto; //Comando pra colocar o texto
}
function exibirMensagemInicial(){ //Função pra exibir a mensagem inicial
    exibirTextoNaTela('h1', 'Jogo do número secreto'); //Declarando a função do título
exibirTextoNaTela('p', 'Escolha um número entre 1 e 10'); //Declarando a função do parágrafo
}

exibirMensagemInicial();


function verificarChute(){ // Função de verificar o chute
    let chute = document.querySelector('input').value; //Variavel do chute, recebe o comando pra colocar o valor no campo
    let numeroSecreto = gerarNumeroAleatorio();

    if(chute == numeroSecreto){ //Se o chute for igual ao número secreto
        exibirTextoNaTela('h1', 'Acertou!'); //Declarando a função pra mudar o título
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa'; //Variavel da palavra tentativa que recebe o se for mais de uma tentativa, fica 'tentativas', se não, fica 'tentativa'
        let mensagemTentativas = `Você descobriu o número secreto com ${tentativas} ${palavraTentativa}!` //Variavel q recebe a mensagem, caso a pessoa acerte, mostrando o número de tentativas e como fica a palavra 'tentativa'
        exibirTextoNaTela('p', mensagemTentativas); //Declarando a função pra mudar o parágrafo com a mensagem
        document.getElementById('reiniciar').removeAttribute('disabled'); //Acessa a tag do botão com o id 'reiniciar' e remove o atributo pra desabilitar o botão
    }else{ // senão
        if(chute > numeroSecreto){ //Se o chute for maior q o número secreto 
            exibirTextoNaTela('p', 'O número secreto é menor!'); // Declarando a função pra mudar o parágrafo falando q o número secreto é menor
        }else{ //Senão
            exibirTextoNaTela('p', 'O número secreto é maior!'); // Declarando a função pra mudar o parágrafo falando q o número secreto é maior
        }
        tentativas++; //Aumentando mais um na variavel tentativas
        limparCampo(); //Declarando a função pra limpar o campo
    }
}

function gerarNumeroAleatorio(){
    let numeroEscolhido = parseInt(Math.random() * 4 + 1);
    if(listaDeNumerosSorteados.includes(numeroEscolhido)){
       return gerarNumeroAleatorio(); 
    }else{
        listaDeNumerosSorteados.push(numeroEscolhido);
        console.log(listaDeNumerosSorteados);
        return numeroEscolhido;
    }
}

function limparCampo(){ //Função pra limpar o campo
    chute = document.querySelector('input'); //Chamando a variável do campo
    chute.value = ''; //O campo recebe nado depois q entra com o valor
}

function reiniciarJogo(){ //Função pra reiniciar o jogo
    numeroSecreto = parseInt(Math.random() * 10 + 1);
    limparCampo();
    tentativas = 1;
    exibirMensagemInicial();
    document.getElementById('reiniciar').setAttribute('disabled', true); //Habilita novamente o atributo 'desabilitar'
}
2 respostas

Oi Felipe,

Você tá gerando um novo número toda vez que dá um chute, aí a lista de números sorteados fica toda zuada.

No seu código, tem essa linha aqui:

let numeroSecreto = gerarNumeroAleatorio();

A parada é que essa linha tá dentro da função verificarChute(), então cada vez que rola um chute, cria um número novo e a lista fica toda errada.

A solução é simples: gera o número secreto só uma vez, sacou? Tira essa linha de dentro da verificarChute() e deixa lá no começo do código, onde você já definiu.

let listaDeNumerosSorteados = [];
let numeroSecreto = gerarNumeroAleatorio(); // Aqui você gera o número secreto de uma vez só, blz?
let tentativas = 1; // Contador de tentativas

// O resto do código fica igual...

function verificarChute() {
    let chute = document.querySelector('input').value; // Pega o chute do usuário

    // O resto da função...
}

Espero que isso ajude a clarear as ideias! Tamo junto, cara!

Fala aí Estudadante, blz! Então, vlw pela resposta, mas se eu tirar, ele não aparece nada no console