1
resposta

Jogo de adivinhação

<meta charset="UTF-8">

 <h3> "Jogo de adivinhação" </h3>
<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(1);

var chute = parseInt(prompt("Digite seu chute!"));

if(chute == numeroPensado) {
    mostra("Você acertou")
}
    else{
    mostra("Você errou, o número pensado foi " + numeroPensado);
}

 if(chute > numeroPensado) {
        mostra("Você errou! Seu chute é maior que o numero pensado")

      } 
    else{
        mostra("Você errou! Seu chute é menor que o numero Pensado");
    }


</script>

Pq mesmo quando acerto o chute ele mostra que errei e o chute é menor que o pensado? como fazer que else não mostre essa mensagem quando acerto?

1 resposta

Oi Igton! Tudo bem por aí?

Agradeço a paciência em aguardar uma resposta!

Temos duas condições separadas dentro do seu código.

Aqui:

if(chute == numeroPensado) {
    mostra("Você acertou")
}
    else{
    mostra("Você errou, o número pensado foi " + numeroPensado);
}

teremos um resultado, que será Você acertou ou Você errou, o número pensado foi n.

Na próxima linha, como o if se repete, começamos uma nova condição a ser testada:

 if(chute > numeroPensado) {
        mostra("Você errou! Seu chute é maior que o numero pensado")

      } 
    else{
        mostra("Você errou! Seu chute é menor que o numero Pensado");
    }

Dentro dessa condição, todas as respostas são Você errou. Assim, mesmo que o chute seja igual ao número pensado, ele se encaixa na condição else, já que o if apenas engloba os números que são maiores. O else é sempre utilizado sem nenhuma condição a ser verificada. Caso a linha de execução do seu programa não se encaixe nas condições iniciais, o else será executado.

Uma forma de reorganizar o código e ter o resultado que você deseja seria a seguinte:

var numeroPensado = sorteia(10);

var chute = parseInt(prompt("Digite seu chute!"));

if(chute == numeroPensado) {
    mostra("Você acertou")
}   

    else if(chute > numeroPensado) {
        mostra("Você errou! Seu chute é maior que o número pensado");
        mostra("O número pensado foi " + numeroPensado);
    } 

    else if (chute < numeroPensado){
        mostra("Você errou! Seu chute é menor que o número Pensado");
        mostra("O número pensado foi " + numeroPensado);
    } 

Perceba que aqui usei a estrutura condicional else if.

  • if - se: realiza um teste lógico. Retorna verdadeiro ou falso.
  • else if - senão se: realiza um teste lógico. Retorna verdadeiro ou falso. Surge a partir da resposta false de condições anteriores. Não existe um limite, é possível utilizar quantos forem necessários
  • else- senão: não realiza teste lógico. Apenas é executado se nenhuma das condições anteriores forem atendidas.

Utilizando essa estrutura é possível manter o código muito mais organizado e englobar todas as possibilidades de comparação entre o chute e o número sorteado.

Espero que sua dúvida tenha sido esclarecida! Se precisar de algum apoio, estou por aqui.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado! ✓.