2
respostas

Web Speech API

let listaDeNumerosSorteados = [];
let numeroLimete = 10;
let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;
/* let numeroSecreto = 7; */

//Nessa parte do código, vamos manipular o DOM
//e exibir o título e o parágrafo na tela. Nessa forma utilizamos
//o método querySelector para selecionar os elementos HTML com mais linhas

/* let titulo = document.querySelector('h1');
titulo.innerHTML = 'Jogo do
número secreto';

let paragrafo = document.querySelector('p');
paragrafo.innerHTML = 'Escolha
um número entre 1 e 10'; */

//Aqui, estamos utilizando uma função para exibir o texto
//na tela, passando a tag e o texto como parâmetros. Nessa forma,
//podemos reutilizar a função para exibir outros textos na tela.
exibirMensagemInicial();

function exibirTextoNaTela(tag, texto) {
let campo = document.querySelector(tag);
campo.innerHTML = texto;
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');
}

function verificarChute() {
let chute = document.querySelector('input').value;
if (chute == numeroSecreto) {
exibirTextoNaTela('h1', 'Você acertou!');
let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
let mensagemTentativas = Parabéns! Você acertou o número secreto com ${tentativas} ${palavraTentativa}.
exibirTextoNaTela('p', mensagemTentativas);
document.getElementById('reiniciar').removeAttribute('disabled');
} else {
if (chute > numeroSecreto) {
exibirTextoNaTela('p', O número secreto é menor que ${chute}. Tente novamente!);
} else {
exibirTextoNaTela('p', O número secreto é maior que ${chute}. Tente novamente!);
}
tentativas++;
limparCampo();
}
}

function gerarNumeroAleatorio() {
let numeroEscolhido = parseInt(Math.random() * numeroLimete + 1);
let = quantidadeDeElementosNaLista = listaDeNumerosSorteados.length;
if (quantidadeDeElementosNaLista == numeroLimete) {
listaDeNumerosSorteados = [];
}

if (listaDeNumerosSorteados.includes(numeroEscolhido)) {
    return gerarNumeroAleatorio();
} else {
    listaDeNumerosSorteados.push(numeroEscolhido);
    console.log(listaDeNumerosSorteados);
    return numeroEscolhido;
}

}

function limparCampo() {
chute = document.querySelector('input');
chute.value = '';
}

function reiniciarJogo() {
numeroSecreto = gerarNumeroAleatorio();
tentativas = 1;
limparCampo();
exibirTextoNaTela('h1', 'Jogo do número secreto');
exibirTextoNaTela('p', 'Escolha um número entre 1 e 10');
exibirMensagemInicial();
document.getElementById('reiniciar').setAttribute('disabled', 'true');
}

2 respostas

Oi, Antonio! Como vai?

Agradeço por compartilhar seu código com a comunidade Alura.

Notei que você está gerando números aleatórios e verificando se eles já foram sorteados. Mandou bem!

Uma dica interessante para o futuro é utilizar o Set para controlar os números sorteados. O Set garante que os elementos não se repitam automaticamente, facilitando o controle dos números sorteados, como no exemplo abaixo:


let numerosSorteados = new Set();

function gerarNumeroAleatorio() {
    let numeroEscolhido = Math.floor(Math.random() * numeroLimete) + 1;

    if (numerosSorteados.size === numeroLimete) {
        numerosSorteados.clear();
    }

    while (numerosSorteados.has(numeroEscolhido)) {
        numeroEscolhido = Math.floor(Math.random() * numeroLimete) + 1;
    }

    numerosSorteados.add(numeroEscolhido);
    return numeroEscolhido;
}

Com isso, você elimina a necessidade de verificar se o número já foi sorteado manualmente.

Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Era exatamente esta minha dúvida srrs tava tentando aqui várias vezes e nada . Valeu