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

Dúvida - Exercício adivinha!

Nesse exercício, me passou pela cabeça de criar uma função para dizer se o número chutado era maior ou menor...

Porém algumas vezes ele funciona Outras vezes ele fala que o numero que chutei era menor Por exemplo .... digitei 5 ele fala que pensou no 6 e que o numero É MAIOR outras vezes ele fala que é MENOR, mas algumas vezes ele acerta....

Minha dúvida é ..... O QUE ESTÁ ACONTECENDO?

<meta charset="UTF-8">

<script>

    /*
        Primeiramente, no arquivo jogo_adivinha.html, pedimos para o 
        computador "pensar" em um número aleatório por meio do Math.random()
        e multiplicamos esse valor por 100, assim, teremos um número 
        entre 0 e 100. Por fim, arredondamos o valor para obtermos 
        um número inteiro. Teremos o seguinte código:
    */ 


    function pulaLinha() {

        document.write("<br>");
    }

    function mostra(frase) {

        document.write(frase);
        pulaLinha();
    }

    /* 

    **** DESAFIOS **** 

    1-  Você pode criar uma função sorteia que recebe um número n e 
        sorteia um número entre 0 a n, retornando esse valor. 
        Dessa forma, em vez de escrever var numeroPensado = Math.round(Math.random() * n);
        você escreveria var numeroPensado = sorteia(n);. 
        Faça essa modificação, criando a nova função e utilize-a.

    2 - Faça com que seu jogo mostre, quando o usuário errar a tentativa, 
        se o número que ele chutou era maior ou menor ao número pensado pelo programa.

    */


   function numero() {
       var numeroPensado = Math.round(Math.random() * 10);
       return numeroPensado;
    }

    var chute = parseInt(prompt("Já pensei. Qual você acha que é? (0 a 10)"));

    if(chute == numero()) {

        mostra("Uau! Você acertou, pois eu pensei no " + numero());
    } else {

        mostra("Você errou! Eu tinha pensado no " + numero());
        pulaLinha();
        maiorOUmenor()
    }

    function maiorOUmenor(){
       if (chute > numero()){

           mostra("O número que você chutou era maior"); 
       } else {

           mostra("O número que você chutou era menor"); 
       } 
       return maiorOUmenor;      
    }

</script>

....sim eu me perdi no meu próprio código.

1 resposta
solução!

Olá Igor, como está?

Relaxa, é normal a gente se perder nos próprios códigos, pra ser sincero isso é bom porque mostra que você está se desafiando.

Bom, uma coisa que percebi é que você sempre está chamando a função numero() quando está comparando se o chute é maior ou menor, isso faz com que numeroPensado seja diferente sempre a cada verificação, por exemplo:

Quando você antes de você chutar o numero no prompt você já havia chamado a função numero que escolheu um valor entre 0 e 10, (Vamos imaginar que foi sorteado o valor 3) e você chute 5, quando você verifica se chute == numero() você faz com que o programa gere um novo numero (Gerou o numero 9), então você errou o numero e vai consultar se o chute é maior ou menor, se chute > numero() aqui já ta gerando novamente um numero aleatório, imagina que esse numero é 5, você não tem caso de verificação caso o chute seja igual.

Espero ter sido claro e se tiver dúvidas pode perguntar.

Minha sugestão é atribuir o resultado de numero() em uma variável e usa-la para comparar com o chute.

Abraço o/

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software