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

Minha solução

Imaginei que a ideia era tornar o mais aleatório possível. Só tem uma coisa acontecendo que eu não sei dizer o motivo, as vezes a quantidade de tentativas final que aparece não é a real, alguns momentos aparecem números irreais como "Você descobriu o número com 5874 tentativas" Alguém sabe dizer se é algo no código ou no navegador? Caixa de texto com "alert" que aparece ao acertar o número secreto, está escrito: "Isso ai! Você descobriu o número secreto 915 com 173896 tentativas.

alert('Boas vindas ao jogo do número secreto');
let variavel = parseInt (Math.random() * 1000 + 1);
let numeroSecreto = parseInt(Math.random() * variavel + 1);
console.log(numeroSecreto);
let chute;
let tentativas = 1;

// enquanto chute não for igual ao n.s.
while (chute != numeroSecreto) {
    chute = prompt('Escolha um número entre 1 e ' + variavel);
    // se chute for igual ao número secreto
    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}`);
        }
        // tentativas = tentativas + 1;
        tentativas++;
    }
}

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

// if (tentativas > 1) {
//     alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativas.`);
// } else {
//     alert(`Isso ai! Você descobriu o número secreto ${numeroSecreto} com ${tentativas} tentativa.`);
// }
1 resposta
solução!

Oi Vinicius, como vai? Espero que esteja bem!

O problema provavelmente está relacionado à forma como você está calculando o número de tentativas. Vou explicar o que está acontecendo.

No seu código, você está gerando dois números aleatórios:

  • variavel: um número aleatório entre 1 e 1000.
  • numeroSecreto: um número aleatório entre 1 e o valor de variavel.

Então, você está tentando adivinhar numeroSecreto com base em variavel.

O problema está na maneira como você está calculando o número de tentativas. Você está incrementando o contador de tentativas (tentativas) a cada vez que o usuário faz um chute, independentemente de ele acertar ou não. Isso significa que o número de tentativas pode se tornar maior que o número real de tentativas necessárias para adivinhar o número secreto.

Aqui está o trecho problemático do seu código:

tentativas++;

Para corrigir isso, você precisa mover esse incremento para dentro do bloco if onde o usuário faz o chute correto. Isso garante que o contador de tentativas só aumente quando o chute for feito corretamente. Veja como fazer isso:

if (chute == numeroSecreto) {
    tentativas++; // Mova este incremento para dentro deste bloco
    break;
} else {
    // Restante do código...
}

Além disso, você deve lidar com a entrada do usuário para garantir que seja um número válido dentro do intervalo. Você pode fazer isso verificando se o valor inserido está dentro do intervalo esperado. Se não estiver, você pode solicitar que o usuário insira novamente.

Aqui está o código ajustado com as correções mencionadas:

alert('Boas vindas ao jogo do número secreto');
let variavel = parseInt(Math.random() * 1000 + 1);
let numeroSecreto = parseInt(Math.random() * variavel + 1);
console.log(numeroSecreto);
let chute;
let tentativas = 1;

// enquanto chute não for igual ao n.s.
while (chute != numeroSecreto) {
    chute = prompt('Escolha um número entre 1 e ' + variavel);
    // Verifica se o chute é um número válido dentro do intervalo
    if (chute < 1 || chute > variavel || isNaN(chute)) {
        alert('Por favor, insira um número válido dentro do intervalo.');
        continue; // Volta ao início do loop para solicitar outro chute
    }
    // se chute for igual ao número secreto
    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}`);
        }
        tentativas++;
    }
}

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

Espero ter ajudado!

Caso tenha dúvidas, fico à disposição.

Abraços e bons estudos!