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

[Dúvida] Dúvida sobre jogo de adivinhar números

Fiz o jogo de adivinhar números como esperado, criei a função para sortear os números e o código diz se o número chutado é menor ou maior que o número que ele "pensou", sem problema algum. Porém quando chutei os números 1 e 11, ele exibe a mensagem de que eu errei o chute, e também exibe a mensagem de que acertei, sendo que deixei meus "if" bem fechados. ![](Insira aqui a descrição dessa imagem para ajudar na acessibilidade

`

6 respostas

Raphael, mostra o código para a gente conseguir entender onde pode estar o erro.

Perdão, eu achei que tinha colocado na mensagem:

<meta charset="UTF-8">
<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

    function sorteiaNumero(numeroSorteado) {
        var numeroSorteado = Math.round(Math.random() * 100);
        return numeroSorteado;
    }


    var chute = parseInt(prompt("Já pensei em um número! Qual você acha que é?"));

    if(chute == sorteiaNumero()) {

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

    if (chute != sorteiaNumero()) {

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

        if (chute > sorteiaNumero()) {
            mostra("Seu número é maior do que o que eu pensei");
        }

        if (chute < sorteiaNumero()) {
            mostra("Seu número é menor do que o que eu pensei")
        }




</script>

if (chute > sorteiaNumero()) { mostra("Seu número é maior do que o que eu pensei"); } else { mostra("Seu número é menor do que o que eu pensei") }

/* Tenta fazer assim, acho que irá funcionar */

solução!

Raphael, a sua variável numeroSorteado tem que estar fora da função sorteiaNumero. É ela que tem que chamar a função sorteiaNumero. Quando a função sortear o número aleatório ela vai retornar esse valor para dentro da variável que vai passar então a ter esse número sorteado como valor.

Então, tira a variável de dentro da função e coloca ela para chamar a função:

var numeroSorteado = sorteiaNumero(); //Aqui a variável numeroSorteado chama a função sorteiaNumero

Dentro da função você tem que botar o return com o cálculo para o sorteio:

return Math.round(Math.random() * 100); //Aqui você tá dizendo que o valor sorteado vai retornar para dentro da variável que chamou a função

Nos if, você tem que comparar a variável chute com a variável numeroSorteado. No seu código você tá na verdade chamando a função sorteiaNumero a cada comparação.

Tenta refazer seu código. Se você não conseguir, volta aqui que eu te mostro o código todo.

Obrigado Maria, realmente eu tinha me confundido sobre o uso da função, eu a estava usando como variável ao invés de guardar o valor dela em uma variável, ela estava sendo usada em vários ifs e daí a confusão, reescrevi meu código e deu certo. Vou mandar aqui para sugestões ou futuras dúvidas de alguém

<meta charset="UTF-8">
<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

    function sorteiaNumero() {
        Math.round(Math.random() * 100);
        return Math.round(Math.random() * 100);
    }

    var numeroSorteado = sorteiaNumero() ;

    var chute = parseInt(prompt("Escolha um número de 1 a 100"));

    if(chute == numeroSorteado) {

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

    if (chute != numeroSorteado) {

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

        if (chute > numeroSorteado) {
            mostra("Seu número é maior do que o que eu pensei");
        }

        if (chute < numeroSorteado) {
            mostra("Seu número é menor do que o que eu pensei")
        }




</script>