3
respostas

Implementando "input" e "button" no Jogo da Adivinhação

Fiz a implementação do input e do button no jogo da adivinhação, mantendo o recurso de dar três chances para acertar e o de deixar a pessoa escolher um número para que o número sorteado seja entre 0 e o número escolhido pela pessoa. Acredito que dê pra melhorar o código, mas foi a primeira versão que funcionou como eu queria. Se alguém tiver alguma sugestão, será muito bem vinda!

<meta charset="UTF-8">
    <input type="text" placeholder="Adivinhe o número sorteado">
    <button>OK</button>

<script>

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

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

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


}

function verifica() {


    while(tentativas <= 3) {


        if(input.value == numeroPensado) {

            mostra("Parabéns! Você acertou!");
            pulaLinha();
            mostra("O número pensado foi " + numeroPensado + "!");
            break;

        }else{

            alert("Você errou!");

            if(input.value > numeroPensado) {
            alert("Seu chute foi maior que o número pensado.");
                tentativas++;
                input.value = "";
                input.focus();

                if(tentativas > 3) {
                    alert("Você gastou todas as suas chances. Game Over!")
                }
                break;

            }else {
            alert("Seu chute foi menor que o número pensado");   
                tentativas++;
                input.value = "";
                input.focus();

                if(tentativas > 3) {
                    alert("Você gastou todas as suas chances. Game Over!")
                }
                break;
            }
        }
    }
    input.value = "";
}


alert("Boas vindas ao Jogo de Advinhação!");

var numeroLimite = parseInt(prompt("Informe o número limite"));
var numeroPensado = sorteia(numeroLimite); 
    console.log(numeroPensado);
var tentativas = 1;

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



</script>
3 respostas

O que me incomodou, apesar de estar tudo funcional, foi que eu tive que escrever duas vezes a mesma linha:

if(tentativas > 3) {
                    alert("Você gastou todas as suas chances. Game Over!")
                }

Alguém consegue visualizar uma solução pra isso?

Cara, fiz algo diferente, utilizei o loop do "for", porém ainda não consgui consertar para digitar 3 veses. Mas ele lê as três tentativas. trabalhar com while ou for pode te ajudar, porque eles lançam a repetição. Segue meu código, não está terminado.

<meta charset="UTF-8">

<input />
<button>Clique Aqui</button>

<script>

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

    function mostra(frase) {

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

    function click(){

        for(i=0; i<=2; i++){


            var input = document.querySelector("input");
                botao = document.querySelector("button");
                botao.onclick = click;
                botao = Math.round(Math.random());

            if(input.value == botao){
                alert("Acertou, o número pensado foi " + botao);
                break;
            }
            else{
                alert("Você errou. São três tentativas.")
            }

        }

    }

    var botao = document.querySelector("button");
    botao.onclick = click;
    botao = Math.round(Math.random());


</script>

Pois é, no meu caso estou usando o while para a verificação. Eu consegui resolver a coisa das 3 tentativas, declarando uma variável pra marcar isso, dá uma olhadinha no meu código, de repente pode te ajudar com isso.

O problema mesmo é que tive que repetir duas vezes o mesmo comando por conta dessa instrução das tentativas. É que quando a pessoa erra, aparece uma dica dizendo se o número que a pessoa chutou é maior ou menor que o número sorteado. E como as duas condições então dentro da verificação das tentativas, acabei repetindo a instrução de fim de jogo nos dois casos, mas queria melhorar pra não escrever exatamente o mesmo comando duas vezes.