1
resposta

Dava pra ser bem mais simples...

A primeira parte do desafio foi meio que na gambiarra, depois eu vi na solução que poderia ser bem mais simples rsrsrs. Fora que essa solução que eu criei possui o problema de que o número máximo possui uma probabilidade maior de ser sorteado.

<meta charset="utf-8">

<script>

    function pulaLinha() {
        document.write("<br>");
    }
    function mostra(texto) {
        document.write(texto);
        pulaLinha();
    }
    function sorteia(max) {
        var numeroPensado1 = Math.round(Math.random() * 100);
        if (numeroPensado1 <= max) {
            return numeroPensado1;
        } else {
            console.log(numeroPensado1 + "******");
            var numeroPensado2 = numeroPensado1 - (numeroPensado1 - max);
            return numeroPensado2;
        }
    }

    alert("Vou pensar em um número e você tenta adivinhar!");
    var numeroPensado = sorteia(56);
    console.log(numeroPensado);
    var chute = parseInt(prompt("Já pensei! Qual o seu chute?"));


    if(numeroPensado == chute) {
        mostra("Parabéns! Você acertou, o número é " + numeroPensado + ".");
    } else {
        if(chute > numeroPensado) {
            mostra("Que pena! Seu chute é maior do que o número que pensei.");
        }
        if(chute < numeroPensado) {
            mostra("Que pena! Seu chute é menor do que o número que pensei.");
        }
    }

</script>
1 resposta

Olá Davi, olhando seu código observei e vi que você poderia simplificar mais, ficaria até melhor para ler. Rescrevendo seu código especificamente na parte function sorteia(max), vejo que você usou o if/else pelo fato de que o número pensado estava maior do que o número máximo de sorteio que você definiu. Veja bem esta parte de seu código:

function sorteia(max) {
        var numeroPensado1 = Math.round(Math.random() * 100);
        if (numeroPensado1 <= max) {
            return numeroPensado1;
        } else {
            console.log(numeroPensado1 + "******");
            var numeroPensado2 = numeroPensado1 - (numeroPensado1 - max);
            return numeroPensado2;
        }
    }

var numeroPensado = sorteia(56);

Note que você definiu a função com o nome de [sorteia(max)], porém ao escrever [Math.round(Math.random() * 100);] você não definiu onde seria o [(max)], logo você colocou o número 100 ao invés [max].

Quando mais abaixo você chama pela [function sorteia(max)] através do [var numeroPensado = sorteia(56)], o 56 é ignorado por você não ter definido na função onde seria o lugar dele, por isso toda vez ele pensava em um número de 0 à 100, não o valor definido quando chamada a função que no caso era o 56.

Sendo assim, de uma forma mais simples sem usar if/else nessa situação e aplicando o return diretamente. O código completo ficaria assim, observe a mudança na [function sorteia(max)]:

<!--Dava pra ser bem mais simples... -  Davi de Alcantara saraiva-->

<meta charset="utf-8">

<script>

    function pulaLinha() {
        document.write("<br>");
    }
    function mostra(texto) {
        document.write(texto);
        pulaLinha();
    }
    function sorteia(max) {
        return Math.round(Math.random() * max);
    }

    alert("Vou pensar em um número e você tenta adivinhar!");
    var numeroPensado = sorteia(10);
    console.log(numeroPensado);
    var chute = parseInt(prompt("Já pensei! Qual o seu chute?"));


    if(numeroPensado == chute) {
        mostra("Parabéns! Você acertou, o número é " + numeroPensado + ".");
    } else {
        if(chute > numeroPensado) {
            mostra("Que pena! Seu chute é maior do que o número que pensei.");
        }
        if(chute < numeroPensado) {
            mostra("Que pena! Seu chute é menor do que o número que pensei.");
        }
    }

</script>

Abraços,