Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Jogo Advinha - Dúvida IF ()

Olá pessoal, tudo bem?

Consegui criar a função sorteia(n), porém não entendi o que deu errado com o meu IF. Em alguns testes a lógica não bate. Por exemplo, num teste eu coloquei 3 e mostrou que acertei, porém na outra condição diz que meu chute é menor do que 3.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Além disso, a condição de erro dispara mesmo que eu tenha acertado, de forma incorreta. Poderiam me ajudar a entender o que fiz errado, por favor? Desde já, agradeço a atenção.

Segue código abaixo:

<script>

    function pulaLinha()    {

        document.write("<br>");

    }

    function mostra(frase)  {       

        document.write(frase);
        pulaLinha();             

    }   

    function sorteia(n) {

        return Math.round(Math.random() * n);

    }

    var numeroPensado = sorteia(5);

    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));
    console.log(numeroPensado);


    if(chute == numeroPensado) {                         

        mostra("Ual! Você acertou, pois eu pensei no " + numeroPensado);

    } else {

        mostra("Você errou! Eu tinha pensado no " + numeroPensado);   

    }
    if (chute > numeroPensado) {

        mostra("O número que você chutou é Maior do que o " + numeroPensado);

    } else { 

        mostra("O número que você chutou é Menor do que o " + numeroPensado);
    }

</script>  
5 respostas
solução!

Oi Anderson, o que rolou foi que na condição if / else que você usou por último, o else pode interpretar que o chute seja == ao numero pensado. Pois no if está caso ele seja >, então else pode ser <=. E ai quando você acerta ele dispara a mensagem de erro mesmo assim.

Pra corrigir eu tirei o else e coloquei um novo if com a condição chute < numeroPensado. Ficou assim:


<script>

    function pulaLinha()    {

        document.write("<br>");

    }

    function mostra(frase)  {       

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

    function sorteia(n) {

        return Math.round(Math.random() * n);

    }

    var numeroPensado = sorteia(5);

    var chute = parseInt(prompt("Já pensei. Qual você acha que é?"));
    console.log(numeroPensado);


    if(chute == numeroPensado) {                         

        mostra("Ual! Você acertou, pois eu pensei no " + numeroPensado);

    } else {

        mostra("Você errou! Eu tinha pensado no " + numeroPensado);   

    }
    if (chute > numeroPensado) {

        mostra("O número que você chutou é Maior do que o " + numeroPensado);

    } 

    if (chute < numeroPensado) { 

        mostra("O número que você chutou é Menor do que o " + numeroPensado);
    }


</script>  

Olá Anderson, tudo bem?

Você precisa colocar o segundo if dentro do primeiro else. Assim:

if(chute == numeroPensado) {

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

        if(chute > numeroPensado) {

            mostra("Você errou! Seu chute é maior que o número pensado!");
            mostra("Eu tinha pensado no " + numeroPensado); 

        } else {

            mostra("Você errou! Seu chute é menor que o número pensado!");
            mostra("Eu tinha pensado no " + numeroPensado); 
        }

    }

Outra opção é criar um if para cada condição. Assim:

if(chute == numeroPensado) {

        mostra("Uau! Você acertou, pois eu pensei no " + numeroPensado);
    }
if(chute > numeroPensado) {

            mostra("Você errou! Seu chute é maior que o número pensado!");
            mostra("Eu tinha pensado no " + numeroPensado); 

    }
if(chute < numeroPensado) {

            mostra("Você errou! Seu chute é menor que o número pensado!");
            mostra("Eu tinha pensado no " + numeroPensado); 
  }

Testa aí e nos diga o resultado.

Bons estudos!

Boa tarde pessal.

Fiz o if e else dessa forma.

        if (chute == numeroPensado) {
            mostra("Você acertou !!!" + numeroPensado); 
        } else if (chute > numeroPensado) {
            mostra("Você errou! Sue chute foi maior que o número pensado, que é: " + numeroPensado);
            } else {
                mostra("Você errou! Sue chute foi menor que o número pensado, que é: " + numeroPensado);
            }

Muito obrigado pessoal!!! Consegui entender ;)

Abs,

Pessoal, não sei se vocês entenderam da mesma maneira que eu, mas essa função "Sorteia", me deixou um pouco confusa.

No exercício o professor nos explica que a multiplicação por 10 no cálculo Math.round(Math.random() * 10); é para pular uma casa decimal e fazer com que a máquina procure por números aleatórios de 0 a 10.

No entanto, nessa função (exemplificada na imagem), acredito que o professor tenha colocado o (n) no lugar errado, uma vez que esse número aleatório (n) deve estar dentro de Math.random(), e onde ele posicionou o (n), deveria ser um número tipo 10,100... para corresponder ao número de casas décimas que queremos procurar. tipo: se eu quero escolher um número entre 0 e 10, 0 e 100, e assim por diante.

Eu fiz minha fórmula da seguinte forma:

funcion sorteia(n) {

           return Math.round(Math.random(n) * 10);
           }

           E deu super certo.

Print!