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

o if nao funciona como deveria

<meta charset="utf-8">

<script> 


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

    function w(frase)
        {
        document.write(frase);
        br();
        }

    function sorteia(n)
        {
        return Math.round(Math.random() * n);
        }

    var numero = (prompt("Digite a dificuldade desejada: Easy , Medium or Hard"));

    if (numero == "Easy","easy","EASY","Medium","medium","MEDIUM","Hard","hard","HARD");
    {

        if (numero == "Easy");
        {
        var numeroPensado = sorteia(10);
        console.log(numeroPensado);
        var numeroChutado = parseInt(prompt (" De 0 a 10, descubra o número que pensei: "));
        }


        if (numero == "Medium");
        {
        var numeroPensado = sorteia(100);
        console.log(numeroPensado);
        var numeroChutado = parseInt(prompt (" De 0 a 100, descubra o número que pensei: ")); 
        }


        if (numero == "Hard");
        {
        var numeroPensado = sorteia(1000);
        console.log(numeroPensado);
        var numeroChutado = parseInt(prompt (" De 0 a 1000, descubra o número que pensei: ")); 
        }


        if (numeroPensado == numeroChutado)
        {
        w ("Acertou mizeravi! Era " + numeroPensado + " mesmo!");
        }
        else
        {
        w("ERROOOUUU! <br><br> O número que pensei foi: " + numeroPensado + ". <br>Aperte F5 e tente novamente.")


    } else {
    w ("Por favor escolha uma das dificuldades.<br>Aperte F5 para recomeçar.");
    }

</script>        

esta dando erro no ELSE e nao esta obedecendo as condições dos IF. alguem pode me explicar o que esta errado?

1 resposta
solução!

Olá Filipe,

tem algumas coisas na estrutura dos ifs que precisam de um ajuste.

A primeira delas é que o if não pode ter um ponto e vírgula após o parênteses. O ponto e vírgula sempre marca o fim de uma instrução, ou seja, quando fazemos

if (numero == "Easy");
{
    var numeroPensado = sorteia(10);
    console.log(numeroPensado);
    var numeroChutado = parseInt(prompt (" De 0 a 10, descubra o número que pensei: "));
}

tudo que está dentro das chaves não faz parte do if. Para o navegador, seria como se o código estivesse assim:

if (numero == "Easy") {}

var numeroPensado = sorteia(10);
console.log(numeroPensado);
var numeroChutado = parseInt(prompt (" De 0 a 10, descubra o número que pensei: "));

Então uma primeira coisa que precisa fazer é tirar todos os ponto e vírgulas após os parênteses do if.

Um segundo ajuste é que faltou uma chave para fechar o else que imprime a mensagem de errou

        else
        {
            w("ERROOOUUU! <br><br> O número que pensei foi: " + numeroPensado + ". <br>Aperte F5 e tente novamente.")

E o última coisa é acertar as comparações do primeiro if. Ali o site deveria verificar se o numero possui o texto Easy OU easy OU EASY OU Medium e assim por diante. No JS para fazer o OU para juntar duas comparações precisa usar aquele comando de ||

if( numero == "Easy"|| numero == "easy"|| numero == "EASY"|| numero == "Medium" || ... assim por diante )

Você pode inclusive usar esta mesma técnica nos ifs que específicos de cada dificuldade.