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

Jogo da adivinhação !Podem verificar se minha lógica esta ok?!

<meta charset="utf-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    var segredo = Math.round(Math.random() * 10);
    var input = document.querySelector("input");
    input.focus();

    var tentativas = 0;
    alert("Atenção você tera apenas 3 chances de acertar o numero");


                function verifica(){

                while(tentativas <=3){



                if (input.value == segredo){


                alert("Você acertou!" + tentativas);
                break

                } else {
                alert("Você erroooooou!" + tentativas);

                tentativas++;

                   }{

                   if(input.value > segredo){

               alert("O numero que você digitou é maior que o numero pensado");

                   } else {

                (input.value < segredo);

                   alert("O numero que vc digitou é menor do que o numero pensado");
               }
               }


            if (tentativas >=3) + alert("Que pena suas chances se esgotaram");
            break;
            }
            } 







            input.value = "";
            input.focus();


              var button = document.querySelector("button");
              button.onclick = verifica;


</script>
8 respostas

Olá, Luciane!!! Tudo bem contigo?

Sua lógica está correta sim! Rodou perfeitamente!

Alguns pontos não são muito usuais, como por exemplo, a separação por chaves "neutras"

} {

ou a concatenação do ifcom alert

if (tentativas >= 3) + alert("Que pena suas chances se esgotaram");

Não está errado, tudo bem... só não é muito usual!

Agora, deixo como desafio, como podemos "chutar" e o campo apagar meu chute após comparar?

Outro ainda: como podemos realizar a lógica usando while e forpara reduzir a utilização de if's? ;-)

Dica: dê uma olhada no fórum, caso aperte!!!

É isso aí, Luciane!!!

Um abraço e bons estudos!!!

Preciso de uma ajuda para ajudar o while e for não estou conseguindo sozinha resolver.

Olá, Luciane! Como vai?

Vou te passar um exemplo de for ;-)

<meta charset="UTF-8">

<script>

    function pulaLinha() {

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

    function mostra(texto) {

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

    function sorteia(n) {

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


    alert("Tente adivinhar o número escolhido.");

    var tentativas = 1;


    for (tentativas; tentativas <= 3; tentativas++) {

        var númeroPensado = sorteia(10);
        console.log(númeroPensado);
        var chute = parseInt(prompt("Coloque seu número!"));

        if (númeroPensado == chute) {

            mostra("Você acertou!");
            break;

        } else {

            mostra("Você errou! O número pensado foi " + númeroPensado + ".");

        }
    }

    mostra("Suas tentativas acabaram.");


</script>

Agora vou pedir para que adapte ao seu código. Vai ser bacana para treinar!

Depois, em cima desse for, tente aplicar o while. Caso de uma travada, volte aqui que a gente conversa novamente ;-)

Mas caso consigo, volte aqui e poste sua solução com fore while

Um abraço e até breve!!!

Olá, eu estou bem e vc?

Estou com dificuldade imensa com esse código fiz a condição do for funcionou mas não do jeito que eu queria, eu estou fazendo pelo código do ultimo exercicio, aquele que vc cria button e input. Mas ao invés dele fazer a condição para o usuario digotar novamente 3x o palpite, ele abre um pop-up .(vc errou,vc erroi,vc errou e por fim mostra que o usuario nao tem mais chances. Já fiz de tudo revisei o código as aulasm tentei colocar a variavel parseInt porém sem sucesso,não sei se isso é um sinal para desistir,mas eu sou muito persistente e quero fazer isso funcionar. desde ja agradeço sua atenção.

<meta charset="utf-8">

<input/>
<button>Compare com o meu segredo</button>

<script>

    var segredo = Math.round(Math.random() * 10);
    var input = document.querySelector("input");
    input.value = "";
    input.focus();





    alert("Atenção você tera apenas 3 chances de acertar o numero");


              function mostra(frase){
                document.write(frase);
              }


                function verifica(){
                var incremento = 0;
                for(var incremento = 0;incremento <= 3;incremento++); {

                if  (input.value ==  segredo) {
                mostra("Você acertou!");
                break;

                }else{
                  alert("vc errou");


                while (input.value != segredo) { 
                alert("Tente acertar o numero mais uma vez...");    
                  incremento++;
                   }
                  }
                  }

                    if(incremento >= 3){
                    mostra("suas chances acabaram");



                  }



              var button = document.querySelector("button");
              button.onclick = verifica;


</script>insira seu código aqui

Olá boa noite, finalmente eu consegui fazer o exercício utilizando o for e o while.Mas tive que mudar o código (Não utilizei os botões e sim o prompt para coletar os dados.

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


                function pulaLinha() {

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

                function mostra(frase) {

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


                alert("Qual numero você acha que eu tenho no meu segredo?");

                function adivinha(){ // inicio da chave adivinha
                 return Math.round(Math.random() * 10);
                }

                var tentativas = 3;



                  for (var contador = 1; contador <= tentativas; contador++) {

                  var segredo = adivinha();


                var chute = parseInt (prompt("Vamos lá  digite seu palpite."));

                if (segredo == chute){
                mostra("vc acertou o segredo")
                break;


                 while(segredo != chute)  {

                alert("Você errrrrouuuuuuuuu");


                }
            }
                if (segredo > chute) {

                    alert("O segredo é maior que o seu chute")
                }else{
                   alert("O segredo  menor que seu chute")


            }


        }

        alert("Tentativas se esgotaram. Quem sabe da próxima tentativa você acerta!!")








</script>
solução!

Olá, Luciane! Tudo bom?

É isso aí! Vamos tentar e tentar!

O mais importante não são os erros em si, mas entender o porque do erro.

Mais vale diversas tentativas de tentar algo diferente que, simplesmente copiar e seguir em frente!

Eu tomei a liberdade e fiz algumas alterações. Vamos lá!

Todas as vezes em que rodamos um exercício nesse estilo ele roda de uma única vez. O que eu quero dizer com isso? Quando usamos alerte mostraterão comportamentos diferentes. Vou mostrar na prática:

Veja que quando você roda o código, e erra todas as vezes, o comportamento é o esperado!

Agora, quando acerto, ele não mostra a mensagem "vc acertou o segredo"logo de início. Ele mostra "Tentativas se esgotaram. Quem sabe da próxima tentativa você acerta!!" e depois aparece "vc acertou o segredo"

O navegador vai rodar todo o código para fazer o último comando pendente. Perceba que enquanto digitamos o chute, o navegador fica rodando, aguardando o comando para ser executado. Resumindo, os alerts serão executados primeiro e depois o mostraque é algo estático. Como o seu encerramento de código termina com alert, ele guarda a frase de acerto, executa o alerte por último libera o mostra.

Então para isso, troquei

alert("vc acertou o segredo")

e támbem o

mostra("Fim do jogo!!")

Ok! Agora se eu acertar em já mostra o alertde acerto e encerra com o mostra

Outro ponto: retirei o while, pois ele não seria usado rs. Se acertasse, ele já pularia para fora do loop por causa do break. E tudo bem! Está correto ele não existir ;-)

Um outro ponto é enxugar mais o contador de tentativas. Apliquei dentro do for

var tentativas = 1;

    for (tentativas; tentativas <= 3; tentativas++) {

Aqui eu digo que quero que as tentativas comecem em 1e que quando forem iguais a 3"game over". A sua também está correta!!!

Essa variável fora faz com que guarde a somatória de tentativas.

Ah! Adicionei também um console.logsó para ver através do consoledo navegador quais são os números que estão sendo sorteados, pois ele faz um novo sorteio a cada tentativa. Essa você não facilitou o apostador, hein Luciane! ahaha

O código completo ficará dessa forma:

<meta charset="UTF-8">

<script>

    function pulaLinha() {

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

    function mostra(frase) {

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

    alert("Qual numero você acha que eu tenho no meu segredo?");

    function adivinha() { // inicio da chave adivinha
        return Math.round(Math.random() * 10);        
    }

    var tentativas = 1;

    for (tentativas; tentativas <= 3; tentativas++) {

        var segredo = adivinha();
        console.log(segredo);
        var chute = parseInt(prompt("Vamos lá  digite seu palpite."));

        if (segredo == chute) {
            alert("vc acertou o segredo")
            break;
        }

        if (segredo > chute) {
            alert("O segredo é maior que o seu chute")

        } else {
            alert("O segredo  menor que seu chute")

        }

    }

    mostra("Fim do jogo!!")

</script>

Espero ter ajudado e continue assim.

Qualquer duvida nos procure!

Obrigada pela ajuda, eu tentei e consegui entender como funciona.Vlw pelo apoio

Imagina! É sempre um prazer ajudar ;-)

Qualquer dúvida não deixe de nos procurar!

Um abraço e bons estudos!