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

[Dúvida] Jogoda adivinhação: quando reinicio o jogo ele nao sorteia o numero aleatorio.

ele gera o primeiro numero aleatorio, mas quando eu reinicio o jogo ele nao gera o proximo numero .

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

let tentativas = 1;

function exibirNaTela(tag, texto){
    let campo = document.querySelector(tag);
    campo.innerHTML = texto ;
}
function exibirMensagemInicial () {
exibirNaTela('h1','Jogo do Numero Secreto');
exibirNaTela('p', 'Escolha um numero de 1 a 4.');    
}   
exibirMensagemInicial();

function verificarChute(){

let chute = document.querySelector('input').value;
if( chute == numeroSecreto){
    exibirNaTela("h1",'acertou');
    let palavraTentativa = tentativas == 1 ? 'tentativa.' : 'tentativas';
    let mensagemTentativas = `você descobriu o numero secreto em ${tentativas} ${palavraTentativa}`;
    exibirNaTela('p', mensagemTentativas);

    document.getElementById('reiniciar').removeAttribute('disabled');
}else if(chute > numeroSecreto){
    exibirNaTela('p','O Numero Secreto é Menor.');
}else{
    exibirNaTela('p','O Numero Secreto é maior.');
}
tentativas++;
limparCampo()
}

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

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

}


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

}

function reiniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio();
    limparCampo();
    tentativas = 1;
    exibirMensagemInicial();
    document.getElementById('reiniciar').setAttribute('disabled', true);
}
console.log(numeroSecreto)
3 respostas

Olá Ivan! Tudo ok contigo?

Como você não compartilhou seu projeto todo, eu testei o seu código JS, mas usando o HTML, CSS, e imagens do curso!

E testando eu não identifiquei esse problema. Eu dei uma olhada no console, e percebi que o que acontece é que ele vai criando um novo número aleatório e colocando ali no array. E quando ele atinge o número máximo de números ele zera o array e reinicia o processo, mas sempre gera um número aleatório novo.

Sendo assim o problema pode não ser o JS, mas outra coisa, então se você pudesse explicar o problema com mais detalhes e ser mais específico, e se puder colocar o código no GitHub e compartilhar o link para eu poder ajudar melhor, já seria de grande ajuda.

Bom seria isso.

Abraços e bons estudos!

A ideia é gerar um numero aleatorio 1 a 10 e colocar em uma lista, quando preencher a lista com os 10 numeros ela é substituida por uma lista vazia.O problema é o seguinte, quando ele acrescenta o quarto, quinto numero na lista ele da um erro e não acrescenta mais. O jogo tambem retorna uma mensagem se o numero gerado era maior ou menor que o seu chute, quando ocorre esse erro ele sempre responde que o numero é amior.

Link do Jogo https://github.com/Douvak/Jogo-Numero-Secreto

solução!

Opa Ivan! Tudo bem?

Desculpe a demora.

O problema está na linha onde você está retornando a função gerarNumeroAleatorio em vez de chamá-la. Aqui está a linha em questão:

return gerarNumeroAleatorio;

Você precisa chamar a função, não apenas referenciá-la. Portanto, ajuste essa linha para:

return gerarNumeroAleatorio();

Dessa forma, a função será chamada corretamente, e você obterá o número aleatório desejado. A função gerarNumeroAleatorio é chamada recursivamente no seu código quando o número gerado já está na lista. Se essa recursão não for corrigida, ela pode levar a um estouro de pilha.

Era isso. Se precisar eu estarei por aqui!

Abraços e bons estudos.