Fiz algumas alterações no jogo do número da sorte.
Ao sortear um novo número, aparentemente numa interação que acontece em um momento aleatório, tenho como numero secreto o valor NaN.
Não consegui entender o porque dessa interação, nem decifrar o momento exato. Pois acontece em momentos diferentes, até mesmo com entradas aparentemente iguais.
Alguém poderia ajudar, por favor?
let listaNumerosEscolhidos = [];
let numeroSecreto;
let numeroMaximo;
let tentativas = 1;
function exibirTextos(tag, texto)
{
let campo = document.querySelector(tag);
campo.innerHTML = texto;
}
function verificarChute()
{
let chute = document.querySelector("input").value;
let palavraTentativa = tentativas == 1 ? "tentativa" : "tentativas";
if(chute == numeroSecreto)
{
exibirTextos("h1", "Parabéns! Você acertou em " + tentativas + " " + palavraTentativa + ".");
exibirTextos("p", "Clique em novo jogo para gerar um novo número.");
document.getElementById("reiniciar").removeAttribute("disabled");
}
else if(chute > numeroSecreto)
{
tentativas++;
exibirTextos("h1", "Tente novamente");
exibirTextos("p", "Escolha um número menor que " + chute);
limparCampo();
}else
{
tentativas++;
exibirTextos("h1", "Tente novamente");
exibirTextos("p", "Escolha um número maior entre " + chute + " a " + numeroMaximo);
limparCampo();
}
}
function novoJogo()
{
numeroMaximo = prompt("Digite o número máximo para determinar a dificuldade do jogo");
console.log("Numero maximo: " + numeroMaximo);
if(numeroMaximo <= listaNumerosEscolhidos.length)
{
alert("Número não disponível, escolha outro.")
return novoJogo();
}
else
{
numeroSecreto = gerarNumeroAleat(numeroMaximo);
console.log("Numero secreto: " + numeroSecreto);
exibirTextos("h1", "O Número Secreto");
exibirTextos("p", "Escolha um número entre 1 a " + numeroMaximo);
document.getElementById("reiniciar").setAttribute("disabled", true);
limparCampo();
tentativas = 1;
}
}
function gerarNumeroAleat(maximo)
{
let numeroEscolhido = parseInt(Math.random() * maximo + 1);
if(listaNumerosEscolhidos.includes(numeroEscolhido))
{
return gerarNumeroAleat();
}
else
{
listaNumerosEscolhidos.push(numeroEscolhido);
console.log(listaNumerosEscolhidos);
return numeroEscolhido;
}
}
function limparCampo()
{
chute = document.querySelector('input');
chute.value = '';
}
if(numeroMaximo == null){
exibirTextos("h1", "O Número Secreto");
exibirTextos("p", "Clique em Novo Jogo para começar");
}
<!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="novoJogo()" id="reiniciar" class="container__botao" >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>