2
respostas

Voz do jogo

voz do jogo

2 respostas

Oii, Tatiane!

Para adicionar voz ao seu jogo, você pode usar a Web Speech API, que é uma API do navegador que permite a síntese de fala. Um exemplo básico de como você poderia usar essa API para fazer o navegador "falar":

function falar(texto) {
    const synth = window.speechSynthesis;
    const utterance = new SpeechSynthesisUtterance(texto);
    synth.speak(utterance);
}

// Exemplo de uso
falar("O número secreto é menor.");

No seu jogo, você pode chamar a função falar() com o texto que deseja que seja falado, como "O número secreto é menor" ou "Acertou! Você descobriu o número secreto."

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

bons estudos

Verifique se você alterou conforme as aulas anteriores os dois códigos dispostos:

No index.html

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Jogo de adivinhar o número secreto com suporte à API de fala.">
    <meta name="author" content="Alura">
    <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>
    <main class="container">
        <section class="container__conteudo">
            <section class="container__informacoes">
                <div class="container__texto">
                    <h1>Adivinhe o <span class="container__texto-azul">número secreto</span></h1>
                    <p class="texto__paragrafo">Escolha um número entre 1 a 10</p>
                </div>
                <input type="number" min="1" max="10" class="container__input" aria-label="Digite um número entre 1 e 10">
                <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>
            </section>
            <img src="./img/ia.png" alt="Ilustração de uma pessoa olhando para a esquerda, representando um jogador pensativo" class="container__imagem-pessoa" />
        </section>
    </main>

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

E no app.js

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

function exibirTextoNaTela(tag, texto) {
    let campo = document.querySelector(tag);
    campo.textContent = texto; // Usar textContent para maior segurança
    if ('speechSynthesis' in window) {
        let utterance = new SpeechSynthesisUtterance(texto);
        utterance.lang = 'pt-BR';
        utterance.rate = 1.2;
        window.speechSynthesis.speak(utterance);
    } else {
        console.log("Web Speech API não suportada neste navegador.");
    }
}

function exibirMensagemInicial() {
    exibirTextoNaTela('h1', 'Jogo do número secreto');
    exibirTextoNaTela('p', 'Escolha um número entre 1 e 10');
}

exibirMensagemInicial();

function verificarChute() {
    const chute = document.querySelector('input').value;

    if (chute == numeroSecreto) {
        exibirTextoNaTela('h1', 'Acertou!');
        const palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        const mensagemTentativas = `Você descobriu o número secreto com ${tentativas} ${palavraTentativa}!`;
        exibirTextoNaTela('p', mensagemTentativas);
        document.getElementById('reiniciar').disabled = false; // Alterando diretamente a propriedade
    } else {
        const mensagem = chute > numeroSecreto ? 'O número secreto é menor' : 'O número secreto é maior';
        exibirTextoNaTela('p', mensagem);
        tentativas++;
        limparCampo();
    }
}

function gerarNumeroAleatorio() {
    return Math.floor(Math.random() * 10) + 1;
}

function limparCampo() {
    document.querySelector('input').value = ''; // Limpa o campo de entrada diretamente
}

function reiniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio();
    limparCampo();
    tentativas = 1;
    exibirMensagemInicial();
    document.getElementById('reiniciar').disabled = true; // Alterando diretamente a propriedade
}

Veja o exemplo que subi no meu repositório e fiz o deploy no site => https://jogo-azure-five.vercel.app/

Bons estudos! Bora lá!