Oi, Davy! Tudo joia?
Os dois pontos críticos que travam o jogo são: converter o input para número e garantir que a função do número aleatório exista (e com o nome correto). Abaixo vai um exemplo completo, curto e funcional, com reinício do jogo e contagem de tentativas.
// **HTML mínimo**
<h1>Jogo do numero secreto</h1>
<p>Escolha um numero de 1 a 10</p>
<input type="number" min="1" max="10" />
<button onclick="verificarChute()">Chutar</button>
<button id="btn-reiniciar" onclick="reiniciarJogo()" disabled>Novo Jogo</button>
// **JS**
let numeroSecreto = gerarNumeroAleatorio(); // **garante função existente**
let tentativas = 1;
// **exibe texto na tela**
function exibirTextoNaTela(tag, texto) {
const campo = document.querySelector(tag);
campo.innerHTML = texto;
}
// **mensagem inicial**
exibirTextoNaTela('h1', 'Jogo do numero secreto');
exibirTextoNaTela('p', 'Escolha um numero de 1 a 10');
// **limpa e foca no input**
function limparCampo() {
const input = document.querySelector('input');
input.value = '';
input.focus();
}
// **gera inteiro de 1 a 10**
function gerarNumeroAleatorio() {
return Math.floor(Math.random() * 10) + 1;
}
// **verifica chute**
function verificarChute() {
const input = document.querySelector('input');
const chute = Number(input.value); // **conversão para número**
if (!chute) {
exibirTextoNaTela('p', 'Digite um numero valido.');
return;
}
if (chute === numeroSecreto) {
exibirTextoNaTela('h1', 'Acertou!');
const palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
const mensagem = `Voce descobriu o numero secreto com ${tentativas} ${palavraTentativa}!`;
exibirTextoNaTela('p', mensagem);
// **desabilita chute, habilita reinicio**
document.querySelector('input').disabled = true;
document.querySelector('button[onclick="verificarChute()"]').disabled = true;
document.getElementById('btn-reiniciar').disabled = false;
} else {
if (chute > numeroSecreto) {
exibirTextoNaTela('p', 'O numero secreto eh menor.');
} else {
exibirTextoNaTela('p', 'O numero secreto eh maior.');
}
tentativas++;
limparCampo();
}
}
// **reinicia o jogo**
function reiniciarJogo() {
numeroSecreto = gerarNumeroAleatorio();
tentativas = 1;
exibirTextoNaTela('h1', 'Jogo do numero secreto');
exibirTextoNaTela('p', 'Escolha um numero de 1 a 10');
const input = document.querySelector('input');
input.disabled = false;
document.querySelector('button[onclick="verificarChute()"]').disabled = false;
document.getElementById('btn-reiniciar').disabled = true;
limparCampo();
}
Resumo rapido do ajuste:
- Use Number(...) para comparar número com número (evita comparação de string).
- Implemente
gerarNumeroAleatorio()
(se estava como GeraNumeroAleatorio
, o nome diferente causa erro). - Reinicie variáveis e estado da UI em
reiniciarJogo()
.
Veja este exemplo sem acentuacao e com strings simples (mesma logica, nomes claros):
// **exemplo sem acentuacao**
function dica(chute, alvo){
return chute > alvo ? 'Menor' : 'Maior';
}
console.log(dica(7, 4)); // **retorna "Menor"**
// O codigo acima **compara** dois numeros e **retorna** a dica textual.
Espero ter ajudado. Conte com o apoio do Fórum na sua jornada.
Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.