1
resposta

19 Consolidando seu conhecimento

Olá! Fiz umas pequenas alterações no código do Jogo da Adivinhação

<meta charset="UTF-8">

<script>
    let chances = 3;
    alert("Bem - vindo ao jogo de adivinhação");


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

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


    let sorteia = n => Math.round(Math.random() * n)

    let numeroAleatorio = sorteia(10);

    //Fiz um loop para que o usuario tenha 3 tentativas de adivinhação
    let acertou = false;
    for (let i = 1; i <= chances; i++) {
        let chute = parseInt(prompt("Digite um numero entre 1 a 10: "));

        //verifico se o numero digitado não é um numero, se o numero é maior que 10 e se usuario não digitou nada
        if (isNaN(chute) || chute < 1 || chute > 10 || chute == '') {
            alert("Digite um numero de 0 a 10");
            i--;
        } else {

            if (chute == numeroAleatorio) {
                acertou = true; //caso o usuario acerte, o valor de acertou muda para true
                mostra(`Acertou. O numero pensado é ${numeroAleatorio}`);
                break; //caso ele acerte, para aqui.

            } else if (chute < numeroAleatorio) {

                alert(`Errou! O numero chutado é menor.`);

            } else {

                alert(`Errou! o numero chutado é maior.`);

            }

        }

    }

    //se o usuario errar, o valor da variavel continua false, como declarada, e ele cai nesse bloco
    if (!acertou) {
        document.write(`Game Over! O numero correto era ${numeroAleatorio}`);
    }

</script>

Alterei o loop while para o loop for. Também fiz uma pequena correção, pois no meu código antigo, mesmo se o usuário não digitasse nada, digitasse um caractere diferente ou um numero maior que 10, ele perdia as 3 chances, caso digitasse algo diferente. No novo código, ele poderá digitar algo diferente que as chances não serão contadas, somente após ele digitar os valores corretamente. Outra coisa, foi a criação da variável "acertou" com o valor false, para que se caso o usuario digitar o valor errado três vezes, a mensagem de Game Over apareça. Fiz alguns comentários para ajudar no entendimento. Vlw :)

1 resposta

Olá, Alex! Tudo bem?

Primeiramente, parabéns pela iniciativa de modificar o código para melhorar a experiência do usuário e por compartilhar suas alterações com a comunidade! Sua lógica está correta e o código parece estar funcionando como esperado.

Lembre-se de que a melhor maneira de aprender programação é praticando e experimentando, como você fez aqui. Continue assim!

Caso tenha dúvidas, estou aqui para ajudar.

Abraços e bons estudos!