2
respostas

O jogo não reinicia quando clico em

Alguém me ajuda a achar meu erro?

//JAVASCRIPT:

let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;
exibirMensagemInicial();

//Função c 2 parametros 

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 entre 1 e 10');

}


// Busquei "verificarChute" lá do HTML. Função sem parâmetro e sem retorno

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);

    } else {
        if(chute > numeroSecreto) {
        exibirTextoNaTela('p', 'o número secreto é menor');
        }
          else { exibirTextoNaTela('p', 'o número secreto é maior');
          }

          limparCampo()
          
         // tentativas = tentativas + 1;
         tentativas++; 

    }

    //console.log('O botão foi clicado'); 

}
// Função  com retorno. Não tem parâmetro, pois o parenteses está vazio.
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('disable',true);

    reiniciarJogo();
}

//FIM

//HTML:

<!DOCTYPE html>
<html lang="pt-br">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <script src="https://code.responsivevoice.org/responsivevoice.js"></script>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Chakra+Petch:wght@700&family=Inter:wght@400;700&display=swap"
        rel="stylesheet">
    <link rel="stylesheet" href="style.css">
    <title>JS Game</title>
</head>

<body>

    <div class="container">
        <div class="container__conteudo">
            <div class="container__informacoes">
                <div class="container__texto">
                    <h1></h1>
                    <p class="texto__paragrafo"></p>
                </div>
                <input type="number" min="1" max="10" class="container__input">
                <div class="chute container__botoes">
                    <button onclick="verificarChute()" class="container__botao">Chutar</button>
                    <button onclick="reiniciarJogo()"  id="reiniciar" class="container__botao" disabled>Novo jogo</button>
                </div>
            </div>
            <img src="./img/ia.png" alt="Uma pessoa olhando para a esquerda" class="container__imagem-pessoa" />
        </div>
    </div>




    <script src="app.js" defer></script>
</body>

</html>
2 respostas

Olá, Roger! Tudo bem?

Parece que há um pequeno erro de digitação no seu código que está impedindo o jogo de reiniciar corretamente. Na função reiniciarJogo(), você tentou desabilitar o botão "Novo jogo" com o seguinte código:

document.getElementById('reiniciar').setAttribute('disable',true);

No entanto, o nome correto do atributo é 'disabled', não 'disable'. Portanto, o código correto seria:

document.getElementById('reiniciar').setAttribute('disabled',true);

Além disso, na função verificarChute(), antes do primeiro else, você deve adicionar a seguinte linha de código:

document.getElementById('reiniciar').removeAttribute('disabled');

Essa função ficará assim:

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');
          }
          limparCampo()
         // tentativas = tentativas + 1;
         tentativas++; 
    }
    //console.log('O botão foi clicado'); 
}

Outra coisa, percebi que você chamou a função reiniciarJogo() dentro da própria função reiniciarJogo(). Isso pode levar a um loop infinito, pois a função está chamando a si mesma indefinidamente. Recomendo remover a linha reiniciarJogo(); de dentro da função reiniciarJogo().

Espero ter ajudado. Até mais e bons estudos!

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

Perfeito! Também matei a cabeça pra verificar o que estava fazendo de errado! Depois de uns 20 min descobri que estava escrito "disable" em vez de "diabled".