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

jogo_adivinha

Prezados, estou com algumas dúvidas para que meu programa funcione plenamente...

1ª) Iniciando minha variável "tentativa = 1" e declarando a condição com <=3, eu tenho direito a 4 tentativas. Porque ? E se eu acerto o numero na 4ª tentativa, não vem a mensagem de retorno dizendo que acertei.

2ª) De que forma consigo fazer com que a mensagem de que errei as 3 tentativas apareça somente quando eu realmente errar todas as 3. Do jeito que eu programei ela aparece junto com a mensagem de acerto também.

Segue meu código abaixo. Obrigado.

<meta charset="utf-8">

<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

    var numeroPensado = Math.round(Math.random() * 10);
    console.log(numeroPensado);

    var numeroInformado = parseInt(prompt("Digite um numero de 0 a 10."));

    var tentativa = 1;

        while(tentativa <= 3){

            if(numeroPensado == numeroInformado){
                mostra("ACERTOOOOOU MIZERÁVIIII !!!");
                break;

            } else {
                alert("VOCE ERRRRRRRROOOOOOU... TENTE NOVAMENTE!");
                numeroInformado = parseInt(prompt("Digite um numero de 0 a 10."));
        }
                tentativa++;
    }
                mostra("VOCE ERROU AS 3 TENTATIVAS.")

</script>
4 respostas
solução!

Beleza Igor?

Do jeito que você montou o seu código, o seu loop(While) é executado 3x, porém você lê o valor do usário antes do loop 1x também, somando, temos 4x (4 tentativas).

Sobre acertar na quarta tentativa e não mostrar a mensagem de acerto, isso acontece, pois essa quarta tentativa, é a última iteração do seu loop, logo, você insere o valor correto, mas não entra no loop novamente que é onde ocorre a verificação se o valor é o correto ou não.

Fiz algumas alterações no seu código pra obter o resultado esperado, dê uma analisada no código, qualquer coisa posta ae

<meta charset="utf-8">

<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

    var numeroPensado = Math.round(Math.random() * 10);
    console.log(numeroPensado);

    var tentativa = 1;

        while(tentativa <= 3){

            var numeroInformado = parseInt(prompt("Digite um numero de 0 a 10."));

            if(numeroPensado == numeroInformado){
                mostra("ACERTOOOOOU MIZERÁVIIII !!!");
                break;

            } else {
                alert("VOCE ERRRRRRRROOOOOOU... TENTE NOVAMENTE!");
            }
                tentativa++;
    }
                mostra("VOCE ERROU AS 3 TENTATIVAS.")

</script>

Aguardo um retorno :D

Boa Mateus! Aguardamos seu retorno Igor.

Entendi Mateus, explicação muito boa. Me perco bastante nesses detalhes lógicos, fiquei mais de uma hora tentando corrigir os probleminhas.

Com relação a minha segunda dúvida, consegui esclarecer nas aulas seguintes. Basta eu criar uma variável booleana auxiliar e utiliza-la em um if caso o usuário erre as 3 tentativas, certo ?

Desde já, obrigado pelo empenho.

Olá galera,

Lendo este foram observei que existe uma linha no código que não encontra-se correta , mostra("VOCE ERROU AS 3 TENTATIVAS."). Ela está depois do looping

Quando o usuário erra todas as tentativas, tudo bem não há problema algum, porem se o número for acertado, além da mensagem ACERTOOOOOU MIZERÁVIIII !!!, o código também ira imprimir a mensagem VOCE ERROU AS 3 TENTATIVAS.

Para resolver este problema dentro do código, fiz a seguinte alteração dento do laço while.

        while(tentativa <= 3){

            var numeroInformado = parseInt(prompt("Digite um numero de 0 a 10."));

            if(numeroPensado == numeroInformado){
                mostra("ACERTOOOOOU MIZERÁVIIII !!!");
                break;

            } else {
                alert("VOCE ERRRRRRRROOOOOOU... TENTE NOVAMENTE!");
            }
            tentativa++;

            if (tentativa == 3) {
                mostra("VOCE ERROU AS 3 TENTATIVAS.")
            }

Abraço galera...