Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Utilizei Math.floor para garantir que o número secreto seja um número inteiro

Eu descobri o Math.floor() no meio do exercício enquanto estava estudando. Eu percebi que precisava de um número inteiro para o meu jogo, mas o Math.random() estava me dando números com vírgulas. Foi aí que, pesquisando um pouco, encontrei o Math.floor(), que transforma esses números com vírgula em números inteiros. Foi uma descoberta muito útil!

alert('Boas vindas ao jogo do número secreto');
let numeroMaximo = 10;
let numeroSecreto = Math.floor(Math.random() * numeroMaximo) + 1;
console.log(numeroSecreto);
let chute;
let tentativas = 0;

// enquanto chute não for igual ao n.s.
while (chute !== numeroSecreto) {
    chute = parseInt(prompt(`Escolha um número entre 1 e ${numeroMaximo}`));
    if (isNaN(chute) || chute < 1 || chute > numeroMaximo) {
        alert("Por favor, insira um número válido.");
    } else {
        tentativas++;
        if (chute === numeroSecreto) {
            break;
        } else if (chute > numeroSecreto) {
            alert(`O número secreto é menor que ${chute}`);
        } else {
            alert(`O número secreto é maior que ${chute}`);
        }
    }
}

let palavraTentativa = tentativas === 1 ? 'tentativa' : 'tentativas';
alert(`Isso aí! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} ${palavraTentativa}.`);

Quando você usa Math.random(), o JavaScript retorna um número decimal aleatório entre 0 (inclusive) e 1 (exclusive). Isso significa que você obtém algo como 0.1234, 0.9876, etc.

Agora, se você quiser usar esse número aleatório para escolher um número inteiro entre 1 e um valor máximo que você definiu, você precisa de duas coisas:

Multiplicar o resultado de Math.random() pelo valor máximo que você deseja. Isso te dá um número decimal entre 0 (inclusive) e o valor máximo que você definiu (exclusive).

Arredondar esse número decimal para baixo para o número inteiro mais próximo. Por exemplo, se você tem 3.75, quer arredondá-lo para 3; se você tem 9.99, quer arredondá-lo para 9.

É aí que entra o Math.floor(). Ele faz exatamente isso: pega um número decimal e arredonda-o para baixo para o inteiro mais próximo.

Então, quando você usa Math.floor(Math.random() * numeroMaximo) + 1, você está fazendo o seguinte:

Math.random() * numeroMaximo te dá um número decimal entre 0 (inclusive) e numeroMaximo (exclusive).

Math.floor() arredonda esse número decimal para baixo para o número inteiro mais próximo.

Finalmente, você adiciona 1 para garantir que o número não seja zero, pois você quer números entre 1 e numeroMaximo.

1 resposta
solução!

Oi, Stephanie! Tudo bem?

Seu código ficou muito bem estruturado! Parabéns pela iniciativa de pesquisar e encontrar uma solução para o seu problema. Isso é uma habilidade muito importante na programação. Obrigada por compartilhar a sua sugestão com a nossa comunidade do fórum!

Um forte abraço e bons estudos!