2
respostas

Aula jogo do sorteio me deu a idéa de fazer jogo da megasena...

Sei que o código pode ser melhor, mas em termos de lógica está ok? é possível comparar vários "ou"? Ex.: if (variável == x || variável == y || variável == z) {instrução}...

<meta charset="utf-8">

<script type="text/javascript">

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

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

    var acerto = 0;
    //código para gerar números aleatório de 1 a 60.
    var na1 = Math.round(Math.random() * 60);
    //console.log(na1);
    var na2 = Math.round(Math.random() * 60);
    //console.log(na2);
    var na3 = Math.round(Math.random() * 60);
    //console.log(na3);
    var na4 = Math.round(Math.random() * 60);
    //console.log(na4);
    var na5 = Math.round(Math.random() * 60);
    //console.log(na5);
    var na6 = Math.round(Math.random() * 60);
    //console.log(na6);

    //código para receber os números digitados peo usuário.
    var n1 = prompt("Entre com o primeiro número.");    
    var n2 = prompt("Entre com o segundo número.");
    var n3 = prompt("Entre com o terceiro número.");
    var n4 = prompt("Entre com o quarto número.");
    var n5 = prompt("Entre com o quinto número.");
    var n6 = prompt("Entre com o sexto número.");

    //compara se número digitado corresponde a algum número gerado somando 1 ao acerto se for positivo.
    if (n1 == na1 || n1 == na2) {
        acerto = acerto + 1;
    }
        if (n1 == na3 || n1 == na4) {
            acerto = acerto + 1;    
        }
            if (n1 == na5 || n1 == na6) {
                acerto = acerto + 1;
            }
    if (n2 == na1 || n2 == na2) {
        acerto = acerto + 1;
    }
        if (n2 == na3 || n2 == na4) {
            acerto = acerto + 1;    
        }
            if (n2 == na5 || n2 == na6) {
                acerto = acerto + 1;
            }
    if (n3 == na1 || n3 == na2) {
        acerto = acerto + 1;
    }
        if (n3 == na3 || n3 == na4) {
            acerto = acerto + 1;    
        }
            if (n3 == na5 || n3 == na6) {
                acerto = acerto + 1;
            }
    if (n4 == na1 || n4 == na2) {
        acerto = acerto + 1;
    }
        if (n4 == na3 || n4 == na4) {
            acerto = acerto + 1;    
        }
            if (n4 == na5 || n4 == na6) {
                acerto = acerto + 1;
            }
    if (n5 == na1 || n5 == na2) {
        acerto = acerto + 1;
    }
        if (n5 == na3 || n5 == na4) {
            acerto = acerto + 1;    
        }
            if (n5 == na5 || n5 == na6) {
                acerto = acerto + 1;
            }
    if (n6 == na1 || n6 == na2) {
        acerto = acerto + 1;
    }
        if (n6 == na3 || n6 == na4) {
            acerto = acerto + 1;    
        }
            if (n6 == na5 || n6 == na6) {
                acerto = acerto + 1;
            }

    //compara a quantidade de acerto e mostra o resultado ao usuário.
    if (acerto <= 2) { 
        mostra("Você não ganhou!");
        mostra("Números sorteados: " + na1 + "- "  + na2 + "- " + na3 + "- " + na4 + "- " + na5 +"- " + na6);
        mostra("Números apostados: " + n1 + "- "  + n2 +"- " + n3 +"- " + n4 +"- " + n5 +"- " + n6);
        }
        if (acerto == 3) {
            mostra("Você acertou a terça!");
            mostra("Números sorteados: " + na1 + "- "  + na2 + "- " + na3 + "- " + na4 + "- " + na5 +"- " + na6);
            mostra("Números apostados: " + n1 + "- "  + n2 +"- " + n3 +"- " + n4 +"- " + n5 +"- " + n6);
        }

            if (acerto == 4) {
                mostra("Você acertou a quadra!");
                mostra("Números sorteados: " + na1 + "- "  + na2 + "- " + na3 + "- " + na4 + "- " + na5 +"- " + na6);
                mostra("Números apostados: " + n1 + "- "  + n2 +"- " + n3 +"- " + n4 +"- " + n5 +"- " + n6);
                }
                if (acerto == 5) {
                    mostra("Você acertou a quina!");
                    mostra("Números sorteados: " + na1 + "- "  + na2 + "- " + na3 + "- " + na4 + "- " + na5 +"- " + na6);
                    mostra("Números apostados: " + n1 + "- "  + n2 +"- " + n3 +"- " + n4 +"- " + n5 +"- " + n6);
                }
                    if (acerto == 6) {
                        mostra("Você acertou a sena!");
                        mostra("Números sorteados: " + na1 + "- "  + na2 + "- " + na3 + "- " + na4 + "- " + na5 +"- " + na6);
                        mostra("Números apostados: " + n1 + "- "  + n2 +"- " + n3 +"- " + n4 +"- " + n5 +"- " + n6);
                }
</script>
2 respostas

Primeiramente parabéns por tentar chegar a uma solução sozinho. Inclusive foi um bom teste para praticar o uso do if. Todavia, seu código acaba ficando um tanto difícil de ler e de manter.

A boa notícia é que durante o curso você aprenderá a trabalhar com uma estrutura de dados chamada array que nada mais é do que uma variável que pode guardar múltiplos valores. Nela, você poderia guardar os números sorteados da mega e em outro o número da aposta do jogador. Por fim, através da aplicação de estruturadas de controle e repetição como for ou while você verificaria se o jogador acertou ou não.

Parece que você não chegou nessa parte ainda. Quando chegar, consolide bem a lógica de se trabalhar com arrays, de pesquisar dentro de um array. Você ficará maravilhado como seu código se reduzirá a poucas linhas e o quanto ficará mais fácil de ler.

Então, eu avalio seu código em um estágio anterior aos de estrutura de controle e array. Esta OK, mas se você já tivesse chegado na parte de array, loops, etc. não estaria um código bom.

Enfim, meu aluno, vamos aguardar até que você termine o curso. No final, fica o desafio de melhorar seu código com base no que aprenderá. Poste-o assim que se sentir à vontade.

Sucesso e bom estudo Marco!

Muito bom Marcos! Trabalhou bem com os "IFs", vamos em frente, bons estudos!!!