2
respostas

[Dúvida] não sei o que tem de errado com meu código..

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


function exibirTextoNaTela(tag, texto){
    let campo = document.querySelector(tag)
    campo.innerHTML = texto;
    responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate:1.2});
}

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

function verificarChute() {
    let chute = document.querySelector('input').value;
    if(chute == numeroSecreto) 
    {
    let palavraTentativas = tentativas > 1? 'tentativas' : 'tentativa'
    let mensagemTentativas = `Você acertou o número secreto com ${tentativas} ${palavraTentativas}`;
    exibirTextoNaTela('h1', 'Acertou!');
    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() * numeroLimite + 1 )
    let quantidadeDeElementosNaLista = listaDeNumerosSorteados.lenght;

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

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

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

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

print da minha tela

Olá João! Vamos tentar entender o que está acontecendo!

1: Na função gerarNumeroAleatorio, há um erro de digitação na palavra length. Está escrito lenght, o que pode causar um comportamento inesperado.

2: Ainda na função gerarNumeroAleatorio, a variável listaDeNumeroSorteados está escrita incorretamente quando você tenta adicionar um número a ela. Deveria ser listaDeNumerosSorteados.

3: É uma boa prática declarar todas as variáveis com let ou const para evitar que sejam globais por acidente. Na função limparCampo, a variável chute deve ser declarada com let.

Exemplo da possivel solução

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


function exibirTextoNaTela(tag, texto){
    let campo = document.querySelector(tag)
    campo.innerHTML = texto;
    responsiveVoice.speak(texto, 'Brazilian Portuguese Female', {rate:1.2});
}

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

function verificarChute() {
    let chute = document.querySelector('input').value;
    if(chute == numeroSecreto) 
    {
    let palavraTentativas = tentativas > 1? 'tentativas' : 'tentativa'
    let mensagemTentativas = `Você acertou o número secreto com ${tentativas} ${palavraTentativas}`;
    exibirTextoNaTela('h1', 'Acertou!');
    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() * numeroLimite + 1 )
    let quantidadeDeElementosNaLista = listaDeNumerosSorteados.length; // erro de digitação

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

    if(listaDeNumerosSorteados.includes(numeroEscolhido)){
      return gerarNumeroAleatorio();
    }else{
      listaDeNumerosSorteados.push(numeroEscolhido) // erro de digitação
      console.log(listaDeNumerosSorteados)
      return numeroEscolhido;
    }
}

function limparCampo() {
    let chute = document.querySelector('input'); //declarando a variável chute no escopo da função limparCampo
    chute.value = '';
}

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

Com isso acretido que funcione como esperado. espero ter ajudado, bons estudos!