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

[Projeto] projeto final do curso

https://ribeiroarley.github.io/jogo-do-numero-secreto/

https://github.com/ribeiroarley/jogo-do-numero-secreto

document.addEventListener('DOMContentLoaded', function() {
    // Alterar o conteúdo da tag h1
    let titulo = document.querySelector('h1');
    titulo.innerHTML = 'Hora do Desafio';

    // Função para exibir mensagem no console
    function exibirMensagemNoConsole() {
        console.log('O botão foi clicado!');
    }

    // Função para exibir alerta
    function exibirAlerta() {
        alert('Eu amo JS');
    }

    // Função para perguntar o nome de uma cidade e exibir um alerta
    function exibirPrompt() {
        let nomeDaCidade = prompt('Digite o nome de uma cidade do Brasil que você gosta muito:');
        alert(`Estive em ${nomeDaCidade} e lembrei de você`);
    }

    // Função para somar dois números e exibir o resultado
    function somandoDoisNumeros() {
        let primeiroNumero = parseInt(prompt('Digite o primeiro número'));
        let segundoNumero = parseInt(prompt('Digite o segundo número'));
        let resultado = primeiroNumero + segundoNumero;
        alert(`${primeiroNumero} + ${segundoNumero} = ${resultado}`);
    }

    // Adiciona eventos de clique aos botões
    document.querySelector('#botaoConsole').addEventListener('click', exibirMensagemNoConsole);
    document.querySelector('#botaoAlerta').addEventListener('click', exibirAlerta);
    document.querySelector('#botaoPrompt').addEventListener('click', exibirPrompt);
    document.querySelector('#botaoSoma').addEventListener('click', somandoDoisNumeros);
});

// Função para exibir texto na tela e falar o texto usando Web Speech API
function exibirTextoNaTela(seletor, texto) {
    let campo = document.querySelector(seletor);
    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.");
    }
}

// Variáveis globais
let listaDeNumerosSorteados = [];
let numeroLimite = 1000;
let numeroSecreto = gerarNumeroAleatorio();
let tentativas = 1;

// Função para gerar um número aleatório entre 1 e 1000 que não foi sorteado antes
function gerarNumeroAleatorio() {
    let numeroEscolhido;
    let quantidadeDeElementosNaLista = listaDeNumerosSorteados.length;

    if (quantidadeDeElementosNaLista == numeroLimite) {
        listaDeNumerosSorteados = [];
    }

    do {
        numeroEscolhido = Math.floor(Math.random() * numeroLimite) + 1;
    } while (listaDeNumerosSorteados.includes(numeroEscolhido));

    listaDeNumerosSorteados.push(numeroEscolhido);
    console.log(listaDeNumerosSorteados); // Para verificar a lista de números sorteados
    return numeroEscolhido;
}

// Função para verificar chute
function verificarChute() {
    let chute = document.querySelector('input').value;
    
    if (chute == numeroSecreto) {
        exibirTextoNaTela('h1', 'Acertou!');
        let palavraTentativa = tentativas > 1 ? 'tentativas' : 'tentativa';
        let mensagemTentativas = `Você descobriu 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');
        } else {
            exibirTextoNaTela('p', 'O número secreto é maior');
        }
        tentativas++;
        limparCampo();
    }
}

// Função para limpar o campo de entrada
function limparCampo() {
    let chute = document.querySelector('input');
    chute.value = '';
}

// Função para exibir mensagem inicial
function exibirMensagemInicial() {
    exibirTextoNaTela('h1', 'Jogo do número secreto');
    exibirTextoNaTela('p', 'Escolha um número entre 1 e 1000');
}

// Função para reiniciar o jogo
function reiniciarJogo() {
    numeroSecreto = gerarNumeroAleatorio();
    limparCampo();
    tentativas = 1;
    exibirMensagemInicial();
    document.getElementById('reiniciar').setAttribute('disabled', true);
}

// Exibir mensagem inicial ao carregar a página
exibirMensagemInicial();
2 respostas
solução!

Oi, Arley! Como vai?

Obrigada por compartilhar seu projeto com a comunidade Alura. É ótimo ver o quanto você está explorando JavaScript com criatividade no desafio final.

Gostei bastante de como você utilizou a função gerarNumeroAleatorio para evitar repetição de números sorteados. Isso demonstra atenção a detalhes e um bom entendimento de lógica.

Conte com o apoio do Fórum na sua jornada. Abraços e bons estudos!

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

bons estudos

Obrigado