Pular para o conteúdo principal

Jogo da adivinhação

O seu jogo deve gerar um número aleatório entre 1 e 10, e o jogador, por sua vez, precisa adivinhar o número que foi gerado pela máquina. O jogador terá 3 tentativas para tentar descobrir qual é o número correto.

Se o jogador acertar, exiba uma mensagem de parabéns e mostre quantas tentativas foram necessárias para o acerto. Após cada tentativa incorreta, exiba uma mensagem informando se o número gerado pela máquina é maior ou menor do que o número escolhido pelo jogador.

Entrada de dados

A entrada de dados deve ser realizada com o comando prompt.

Saiba mais sobre Entrada de Dados

Para saber mais sobre a entrada de dados com Prompt, acesso a seção Entrada de dados.

Geração de valores numéricos aleatórios

Em JavaScript, temos diversas funcionalidades implementadas e prontas para uso, como o objeto Math, que nos fornece uma série de funções matemáticas muito úteis. Neste exercício, por exemplo, você precisará gerar valores numéricos aleatórios.

Para isso, podemos utilizar o seguinte código JavaScript:

let valorAleatorio = Math.random() * 10;

A expressão Math.random() * 10 nos permite gerar valores aleatórios entre 0 e 10. Vale ressaltar que o valor gerado é decimal, ou seja, apresenta diversas casas decimais.

Para o jogo que você desenvolverá, o ideal é que os números gerados aleatoriamente sejam valores inteiros. O mais legal é que o objeto Math tem algumas funções capazes de "arredondar" valores numéricos para nós.

Math.ceil e Math.floor são métodos embutidos no objeto Math que permitem arredondar números para cima (Math.ceil) e para baixo (Math.floor), respectivamente.

  1. Math.ceil: O método Math.ceil (do inglês "ceiling" que significa teto) arredonda um número para o próximo número inteiro maior ou igual ao número fornecido. Em outras palavras, ele arredonda o número para cima. Se o número já for um inteiro, não haverá alteração. Por exemplo:

    console.log(Math.ceil(4.2)); // Saída: 5
    console.log(Math.ceil(7.8)); // Saída: 8
    console.log(Math.ceil(3)); // Saída: 3 (não há alteração, pois já é um inteiro)
  2. Math.floor: O método Math.floor (do inglês "floor" que significa chão) arredonda um número para o próximo número inteiro menor ou igual ao número fornecido. Em outras palavras, ele arredonda o número para baixo. Se o número já for um inteiro, não haverá alteração. Por exemplo:

    console.log(Math.floor(4.2)); // Saída: 4
    console.log(Math.floor(7.8)); // Saída: 7
    console.log(Math.floor(3)); // Saída: 3 (não há alteração, pois já é um inteiro)

Esses métodos são úteis em várias situações, como quando você precisa garantir que um número esteja arredondado para o próximo inteiro superior ou inferior, especialmente em cálculos matemáticos ou ao exibir resultados em um formato mais legível.

Agora, com essas dicas, você consegue gerar valores aleatórios entre 0 e 2 (incluso)?

Algoritmo proposto

Resolução

Mostrar Resolução
let numeroGerado = Math.floor(Math.random() * 11);
let tentativas = 1;
let numeroEscolha = +prompt("Tentativa 1: Qual número foi gerado?");

if (numeroEscolha == numeroGerado){
alert("Parabéns! Você acertou com 1 tentativa");
}else{
tentativas += 1;
numeroEscolha = +prompt("Tentativa 2: Qual número foi gerado?");

if (numeroEscolha == numeroGerado){
alert("Parabéns! Você acertou com 2 tentativas");
}else{
tentativas += 1;
numeroEscolha = +prompt("Tentativa 3 (última chance): Qual número foi gerado?");

if (numeroEscolha == numeroGerado){
alert("Parabéns! Você acertou com 3 tentativas");
}else{
alert("Deu ruim! Você não advinhou");
}
}
}
Saiba mais sobre o objeto Math

O objeto Math tem diversas outras funções além das aqui apresentadas. Para saber mais e conhecer outras funções disponíveis, acesse https://developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/Global_Objects/Math