Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

[Dúvida] Dúvida Projeto Game Over

Pessoal, boa tarde!

Tenho uma dúvida: criei esse código na aba validação.js, porém quando termino o jogo e falo game over, o jogo não se encerra:

devo criar algum botão no CSS?

function verificaSeOChutePossuiUmValorValido(chute) {
    const numero = +chute // conversão da string para número inteiro

    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 = "black";
        } else {

            elementoChute.innerHTML += '<div>Valor Inválido</div>';
        }
    }

    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-arrow-down"></i></div>`
    } else {
        elementoChute.innerHTML += `<div>O número secreto é maior <i class="fa-solid fa-arrow-up"></i></div>`
    }

}

function chuteForInvalido(numero) {
    return Number.isNaN(numero);
}

function numeroForMaiorOuMenorQueOValorPermitido(numero) {
    return numero > maiorValor || numero < menorValor
}


// aqui acessamos quando clicar no id jogar novamente e faz um recarragemento da página
document.body.addEventListener('click', e => {
    if (e.target.id == 'jogar-novamente') {
        window.location.reload()
    }

})

3 respostas
solução!

Oi, Renan! Tudo bem?

Não precisa criar nenhum botão no CSS, o problema está ocorrendo devido apenas a uma característica do valor de chute gerado pelo reconhecimento de voz da API.

Devemos nos atentar que o valor reconhecido pela API é retornado com um ponto "." no final, dessa forma, devemos considerá-lo ao fazer a nossa comparação, deixando o nosso trecho de código responsável pela comparação da seguinte maneira, ao invés de if (chute.toUpperCase() === "GAME OVER"):

if (chute.toUpperCase() === "GAME OVER.")

Espero ter ajudado na compreensão e resolução do problema. Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓

Muito obrigado pela ajuda, agora deu certo!

Mas gente o reconhecimento de voz não reconhece tudo em letras minusculas ?? Para que o "toUpperCase" ??