O código esta extremamente semelhante ao feito pelo Guilherme, porém ao executa-lo no Chrome, o mesmo apresenta erros no console, e a mensagem sobre chutar mais alto ou mais baixo sequer é exibida. Se alguma alma caridosa puder me auxiliar, não consegui achar o erro.
HTML
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/meyer-reset/2.0/reset.min.css" integrity="sha512-NmLkDIU1C/C88wi324HBc+S2kLhi08PN5GDeUVVVC/BVt/9Izdsc9SVeVfA1UZbY3sHUlDSyRXhCzHfr6hmPPw==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.1.1/css/all.min.css" integrity="sha512-KfkfwYDsLkIlwQp6LFnl8zNdLGxu9YAA1QvwINks4PhcElQSvqcyVLLD9aMhXd13uQjoXtEKNosOWaZqXgel0g==" crossorigin="anonymous" referrerpolicy="no-referrer" />
<link rel="stylesheet" href="style.css">
<title>Número Secreto</title>
</head>
<body>
<h1>Acerte o número secreto</h1>
<h3>O número secreto está entre <span id="menor-valor">0</span> e <span id="maior-valor">100</span></h3>
<div id="chute" class="mensagem">
<!-- <div>Você disse:</div>
<span class="box">20</span>
<div>O número secreto é maior <i class="fa-solid fa-up-long"></i></div> -->
</div>
<script src="app/sortearNumero.js"></script>
<script src="app/reconhecimentoDeVoz.js"></script>
<script src="app/validacao.js"></script>
</body>
</html>
JS (RECONHECIMENTO DE VOZ
const elementoChute = document.getElementById('chute')
window.SpeechRecognition = window.SpeechRecognition || webkitSpeechRecognition;
const recognition = new SpeechRecognition();
recognition.lang = 'pt-Br'
recognition.start()
recognition.addEventListener('result', onSpeak)
function onSpeak(e) {
chute = e.results[0][0].transcript
exibeChuteNaTela(chute)
verificaSeOChutePossuiUmValorValido(chute)
}
function exibeChuteNaTela(chute) {
elementoChute.innerHTML = `
<div>Você disse</div>
<span class="box">${chute}</span>
`
}
recognition.addEventListener('end', () => recognition.start())
JS (VALIDAÇÃO)
function verificaSeOChutePossuiUmValorValido(chute) {
const numero = +chute
if (chuteForInvalido(numero)) {
elementoChute.innerHTML += '<div>Valor inválido</div>'
return
}
if (numeroForMaiorOuMenorQueOValorPermitido(numero)) {
elementoChute.innerHTML += `
<div>Valor inválido: Fale um número entre ${menorValor} e ${maiorValor}</div>
`
return
}
if (numero === numeroSecreto) {
document.body.innerHTML = `
<h2>Você acertou!</h2>
<h3>O número secreto era ${numeroSecreto}</h3>
<button id="jogar-novamente" class="btn-jogar">Jogar novamente</button>
`
} else if (numero > numeroSecreto) {
elementoChute.innerHTML += `
<div>O número secreto é menor <i class="fa-solid fa-down-long"></i></div>
`
} else {
elementoChute.innerHTML += `
<div>O número secreto é maior <i class="fa-solid fa-up-long"></i></div>
`
}
}
function chuteForInvalido(numero) {
return Number.isNaN(numero)
}
function numeroForMaiorOuMenorQueOValorPermitido(numero){
return numero > maiorValor || numero < menorValor
}
document.body.addEventListener('click', e => {
if (e.target.id == 'jogar-novamente') {
window.location.reload()
}
})
if (chuteForInvalido(numero)) {
if (chute.toUpperCase() === "GAME OVER") {
document.body.innerHTML =
`
<h2>Game Over!!!</h2>
<h3>Pressione o botão para jogar novamente</h3>
<button id="jogar-novamente" class="btn-jogar" >Jogar novamente</button>
`
document.body.style.backgroundColor = "#952323";
} else {
elementoChute.innerHTML += '<div>Valor Inválido</div>';
}
}