1
resposta

[Projeto] Projeto Finalizado

//let titulo = document.querySelector("h1"); // Seleciona o elemento <h1> do HTML
//titulo.innerHTML = "Bem-vindo ao jogo do número secreto!"; // Modifica o conteúdo do <h1> para o texto especificado

//let texto = document.querySelector("p"); // Seleciona o elemento <p> do HTML
//texto.innerHTML = "Tente adivinhar o número secreto entre 1 e 100!";// Modifica o conteúdo do <p> para o texto especificado

let listaNumerosSortados = []; // Inicializa um array vazio para armazenar números sorteados, sempre na linha 1
let numeroSecreto = gerarNumero(); // Gera um número secreto aleatório entre 1 e 100
let tentativas = 1; // Inicializa o contador de tentativas

//função para modificar texto sem ficar repetindo código
function exibirTexto(tag, text) {
    let campo = document.querySelector(tag); // Seleciona o elemento HTML com a tag especificada
    campo.innerHTML = text;
}
function mensagemInicial() {
    exibirTexto("h1", "Bem-vindo ao jogo do número secreto!"); // Exibe o texto no elemento <h1>
    exibirTexto("p", "Tente adivinhar o número secreto entre 1 e 50, em 5 tentativas!");// Exibe o texto no elemento <p>
}
mensagemInicial(); // Chama a função para exibir a mensagem inicial
function verificarChute() {
    let chute = document.querySelector('input').value; // Obtém o valor do campo de entrada
    if (chute < 1 || chute > 50 || isNaN(chute)) { // Verifica se o chute está fora do intervalo ou não é um número
        exibirTexto("p", "Por favor, digite um número entre 1 e 50!"); // Exibe mensagem de erro
        limparCampo(); // Limpa o campo de entrada
        document.getElementById('reiniciar').removeAttribute('disabled');// Desabilita o botão após chute inválido
        return; // Encerra a função se o chute for inválido
    }
    if (tentativas > 5) {
        exibirTexto("h1", "Você perdeu!"); // Exibe mensagem de derrota
        exibirTexto("p", "O número secreto era " + numeroSecreto + ". Tente Novamente!"); // Exibe o número secreto
        document.getElementById('reiniciar').removeAttribute('disabled'); // Desabilita o botão após perder
        return; // Encerra a função se o número de tentativas for maior que 5
    }
    if (chute == numeroSecreto) {
        exibirTexto("h1", "Parabéns, você acertou!"); // Exibe mensagem de sucesso
        let palavraTentativa = tentativas == 1 ? "tentativa" : "tentativas"; // Define a mensagem de tentativas
        let mensagemTentativas = `O número secreto era ${numeroSecreto} em ${tentativas} ${palavraTentativa}.`;
        exibirTexto("p", "Você acertou em " + tentativas + " " + mensagemTentativas + "!"); // Exibe o número de tentativas
        exibirTexto("p", mensagemTentativas); // Exibe mensagem com o número secreto e tentativas
        document.getElementById('reiniciar').removeAttribute('disabled'); // Desabilita o botão após acertar
    } else {
        if (chute > numeroSecreto) {
            exibirTexto('p', 'O número secreto é menor!'); // Exibe dica se o chute for maior que o número secreto
        } else {
            exibirTexto('p', 'O número secreto é maior!'); // Exibe dica se o chute for menor que o número secreto
        }
        tentativas++; // Incrementa o contador de tentativas
        limparCampo();
    }
}
function gerarNumero() {
    let numeroEscolhido = parseInt(Math.random() * 50 + 1); // Gera um número aleatório entre 1 e 50
    let quantidadeDeElementosNaLista = listaNumerosSortados.length; // Obtém a quantidade de elementos na lista de números sorteados
    if (quantidadeDeElementosNaLista == 50) {
        listaNumerosSortados = []; // Reseta a lista se todos os números já foram sorteados
        quantidadeDeElementosNaLista = 0; // Reseta a quantidade de elementos na lista
    }
    if(listaNumerosSortados.includes(numeroEscolhido)) {
        return gerarNumero(); // Se o número já foi sorteado, chama a função recursivamente
    } else {
        listaNumerosSortados.push(numeroEscolhido); // Adiciona o número sorteado à lista
        return numeroEscolhido; // Retorna o número sorteado
    }
}
function limparCampo() {
    chute = document.querySelector('input'); // Seleciona o campo de entrada
    chute.value = ""; // Limpa o campo de entrada
}
function reiniciarJogo() {
    numeroSecreto = gerarNumero(); // Gera um novo número secreto
    limparCampo(); // Limpa o campo de entrada
    tentativas = 1; // Reseta o contador de tentativas
    mensagemInicial(); // Exibe a mensagem inicial
    document.getElementById('reiniciar').setAttribute('disabled', true); // Desabilita o botão de reiniciar
}

[https://jogo-numero-secreto-shirley-roques-projects.vercel.app/](link para o projeto completo) [https://github.com/roqueshirley/jogo_numero_secreto.git](link para o código no github)

1 resposta

Oi, Shirley! Tudo bom?

Excelente! Eu acessei o link do seu jogo e ele ficou incrível.

Uma interface de jogo digital parabenizando um jogador por adivinhar o número secreto 49 em 4 tentativas, com uma ilustração futurista de personagens.

Você soube aplicar funções reutilizáveis de forma eficiente, aproveitou o controle de fluxo com condicionais para estruturar as regras do jogo e entendeu como o uso do DOM com querySelector e innerHTML é essencial para criar interfaces dinâmicas e interativas.

Como dica adicional, experimente utilizar template literals quando precisar montar mensagens dinâmicas com variáveis de forma mais legível. Assim:

let tentativas = 3;
let numero = 27;
let mensagem = `Você acertou o número ${numero} em ${tentativas} tentativas!`;
console.log(mensagem);

Com isso, você poderá escrever textos com variáveis de maneira mais limpa e intuitiva.

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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