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

Interatividade na Mega Sena

Fala rapazeada, fiz esse exercício para concluir minha aprendizagem no módulo de Lógica de Programação I. ; ) Resolvi continuar com a ideia dos Números da Mega Sena, porém com uma interatividade do usuário no sorteio dos números. Tentei ao máximo fechar todas as possibilidades de erros que o cliente poderia apresentar, como por exemplo, digitar texto em vez de números, clicar no botão de ok do alert sem ter informado nenhum dado etc. Se vcs puderem analisar e tentarem encontrar alguma falha que posso ter cometido ou mesmo alguma solução mais adequada para algo que eu tenha escrito, ficarei muito agradecido. Aprendi algumas coisas novas devido a necessidade que foi surgindo. Quebrei um pouco a cabeça até achar a resposta, mas valeu muito o esforço.

Obrigado pela força, sempre!

<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <title>Números da Sorte</title>
        <link rel="icon" href="favicon.png">
    </head>

<body>    

    <p>O jogo da <b>Mega Sena</b> é composto pela escolha de 6 dezenas dentre os números 1 ao 60.</p>
    <p>Nesse programa, você pode indicar de <b>1 a 5 dezenas</b>, que podem ser os seus números da sorte. O sistema se encarregará de sortear aleatoriamente<br>a quantidade de números que estiverem faltando para completar as 6 dezenas do seu jogo.</p>
    <p>Qual a quantidade de dezenas da sorte que você quer indicar?</p>
    <input/>
    <br>
    <hr>
    <button>Clique para gerar os números que completam o seu jogo</button>

    <script>

        let input = document.querySelector("input");
        input.focus();

        let button = document.querySelector("button");
        button.onclick = sorteiaNumeros;

        function sorteia() {

            return Math.floor(Math.random() * 60 ) + 1;

        }

        function sorteiaNumeros() {

            let megaSena = [];
            let quantidadeDezenasEscolhidas = input.value;
            let numero = 1;
            let quantidadeDezenasJogadas = 6;
            let quantidadeDezenasPermitidas = 5;

            while(isNaN(quantidadeDezenasEscolhidas)) {

                alert("Atenção!!! Somente números são permitidos para a escolha da quantidade de dezenas.");
                let input = document.querySelector("input");
                input.focus();
                input.value = "";
                $(quantidadeDezenasEscolhidas).val("");
            }

            while(quantidadeDezenasEscolhidas > 5 || quantidadeDezenasEscolhidas == 0) {

                alert("Atenção!!! Entrada inválida. Escolha no mínimo 1 dezena e no máximo 5 dezenas.");
                let input = document.querySelector("input");
                input.focus();
                input.value = "";
                $(quantidadeDezenasEscolhidas).val("");
            }

            while(numero <= quantidadeDezenasEscolhidas) {

                let achou = false;
                let numerosEscolhidos = parseInt(prompt("Escolha um número para a dezena " + numero));

                while(numerosEscolhidos > 60 || numerosEscolhidos == 0 || isNaN(numerosEscolhidos)) {

                    alert("Número não permitido. Os números válidos para a Mega Sena são do 1 ao 60.");
                    numerosEscolhidos = "";
                    numerosEscolhidos = parseInt(prompt("Escolha um número para a dezena " + numero));
                }


                for(let posicao = 0; posicao < megaSena.length; posicao++) {

                    achou = false;

                    if(megaSena[posicao] == numerosEscolhidos) {

                        achou = true;
                        alert("Esse número já foi escolhido. Por favor, escolha outro número diferente.");
                        break;
                    }
                }

                if(achou == false) {

                    megaSena.push(numerosEscolhidos);
                    numero++;
                }
            }


            while(quantidadeDezenasEscolhidas < quantidadeDezenasJogadas) {

                let achou = false;
                let numerosAleatorios = sorteia();

                for(let posicao = 0; posicao < megaSena.length; posicao++) {

                    if(megaSena[posicao] == numerosAleatorios) {

                        achou = true;
                        break;
                    }
                }

                if(achou == false) {

                    megaSena.push(numerosAleatorios);
                    quantidadeDezenasEscolhidas++;
                }    
            }


            megaSena.sort(function(a,b){return a - b});

            alert("Os números escolhidos são: " + megaSena + " Boa Sorte!!!");
            input.value = "";
            input.focus();

        }

    </script>    
</body>
</html>
7 respostas

Oi Caue tudo bem?

Ficou bom o código. Mas já que você quer perfeição. (Embora não precise no momento, o importante é aprender.) Você terá perfeição.

Vou propor mais requisitos para seu programa. Tente programar, se não conseguir me avise que te ajudo. Se não quiser programar tudo bem kkkk, aqui quem manda é você rsrsrs.

O programa está aceitando números decimais como 13.5 ou 15.3, seria legal deixar que o usuário colocasse somente números inteiros.

Se no campo input coloco um número negativo como -10 , o programa sorteia muitos números como : Os números escolhidos são: 3,9,10,11,20,27,30,31,47,50,52,54,55,56,57,60 Boa Sorte!!!

Se coloco então um número negativo grande como -50 já trava o programa rsrs.

O programa permite colocar também números negativos nos prompts das dezenas que você já escolheu.

Seria legal se clicasse em cancelar no prompt saísse do programa.

Outra coisa você está usando sintaxe do jQuery porém não importou a biblioteca dele: $(quantidadeDezenasEscolhidas).val(""); Mas por incrível que pareça não travou o programa.

Mas ficou show de bola. Eu amo programar e fico muito feliz quando os alunos se empolgam e ficam programando por diversão!!!

Oi André, como é bom poder ter a ajuda de vcs aqui! Estou rachando o bico aqui com essas falhas que vc está mostrando!

Quanto ao JQuery, eu pensei: " acho que essa linha deveriar buscar alguma coisa em algum lugar, mas vamos ver o que dá. kkkk E não sei o que houve e o por que, mas ele entregou o que eu queria, mas se não é certo, vamos arrumar isso. Vou fazer esses ajustes que vc propôs e assim que conseguir, coloco aqui para vc ver. Muito obrigado!

abs

Boa Caue muito importante ir além das aulas as dicas do André são excelentes depois coloca seu projeto no Github. Vai chegar o momento que não vai caber no post :) aí no seu topico vc só aponta o repositório.

Espero ter ajudado e bons estudos.

Bom dia Maison e André, fiz os ajustes em relação aos números negativos, mas não consegui bloquear os números decimais. Como tb não consegui fazer com o que o botão Cancel funcionasse, voltando para a tela inicial. Preciso de ajuda :)

obs: Assim que eu entender melhor o Github, postarei por la tb. Obrigado.

abs

Obrigado.

<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <title>Números da Sorte</title>
        <link rel="icon" href="favicon.png">

    </head>

<body>    

    <p>O jogo da <b>Mega Sena</b> é composto pela escolha de 6 dezenas dentre os números 1 ao 60.</p>
    <p>Nesse programa, você pode indicar de <b>1 a 5 dezenas</b>, que podem ser os seus números da sorte. O sistema se encarregará de sortear aleatoriamente<br>a quantidade de números que estiverem faltando para completar as 6 dezenas do seu jogo.</p>
    <p>Qual a quantidade de dezenas da sorte que você quer indicar?</p>
    <input/>
    <br>
    <hr>
    <button>Clique para gerar os números que completam o seu jogo</button>

    <script>

        let input = document.querySelector("input");
        input.focus();

        let button = document.querySelector("button");
        button.onclick = sorteiaNumeros;

        function sorteia() {

            return Math.floor(Math.random() * 60 ) + 1;

        }

        function sorteiaNumeros() {

            let megaSena = [];
            let quantidadeDezenasEscolhidas = input.value;
            let numero = 1;
            let quantidadeDezenasJogadas = 6;
            let quantidadeDezenasPermitidas = 5;


            while(isNaN(quantidadeDezenasEscolhidas))  {

                alert("Atenção!!! Somente números são permitidos para a escolha da quantidade de dezenas.");
                let input = document.querySelector("input");
                input.focus();
                input.value = "";
                $(quantidadeDezenasEscolhidas).val("");
            }

            while(quantidadeDezenasEscolhidas > 5 || quantidadeDezenasEscolhidas <= 0 ) {

                alert("Atenção!!! Entrada inválida. Escolha no mínimo 1 dezena e no máximo 5 dezenas.");
                let input = document.querySelector("input");
                input.focus();
                input.value = "";
                $(quantidadeDezenasEscolhidas).val("");
            }

            while(numero <= quantidadeDezenasEscolhidas) {

                let achou = false;
                let numerosEscolhidos = parseInt(prompt("Escolha um número para a dezena " + numero));


                while(numerosEscolhidos > 60 || numerosEscolhidos <= 0 || isNaN(numerosEscolhidos)) {

                    alert("Número não permitido. Os números válidos para a Mega Sena são do 1 ao 60.");
                    numerosEscolhidos = "";
                    numerosEscolhidos = parseInt(prompt("Escolha um número para a dezena " + numero));

                }

                for(let posicao = 0; posicao < megaSena.length; posicao++) {

                    achou = false;

                    if(megaSena[posicao] == numerosEscolhidos) {

                        achou = true;
                        alert("Esse número já foi escolhido. Por favor, escolha outro número diferente.");
                        break;
                    }
                }

                if(achou == false) {

                    megaSena.push(numerosEscolhidos);
                    numero++;
                }
            }


            while(quantidadeDezenasEscolhidas < quantidadeDezenasJogadas) {

                let achou = false;
                let numerosAleatorios = sorteia();

                for(let posicao = 0; posicao < megaSena.length; posicao++) {

                    if(megaSena[posicao] == numerosAleatorios) {

                        achou = true;
                        break;
                    }
                }

                if(achou == false) {

                    megaSena.push(numerosAleatorios);
                    quantidadeDezenasEscolhidas++;
                }    
            }

            megaSena.sort(function(a,b){return a - b});

            alert("Os números escolhidos são: " + megaSena + " Boa Sorte!!!");
            input.value = "";
            input.focus();

        }


    </script>    
</body>
</html>
solução!

Oi Caue!

Mudei o código para funcionar o que faltava. Dá uma olhada:

<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="UTF-8">
        <title>Números da Sorte</title>
        <link rel="icon" href="favicon.png">

    </head>

<body>    

    <p>O jogo da <b>Mega Sena</b> é composto pela escolha de 6 dezenas dentre os números 1 ao 60.</p>
    <p>Nesse programa, você pode indicar de <b>1 a 5 dezenas</b>, que podem ser os seus números da sorte. O sistema se encarregará de sortear aleatoriamente<br>a quantidade de números que estiverem faltando para completar as 6 dezenas do seu jogo.</p>
    <p>Qual a quantidade de dezenas da sorte que você quer indicar?</p>
    <input/>
    <br>
    <hr>
    <button>Clique para gerar os números que completam o seu jogo</button>

    <script>

        let input = document.querySelector("input");
        input.focus();

        let button = document.querySelector("button");
        button.onclick = sorteiaNumeros;

        function sorteia() {

            return Math.floor(Math.random() * 60 ) + 1;

        }

        function sorteiaNumeros() {

            let megaSena = [];
            let quantidadeDezenasEscolhidas = input.value;
            let numero = 1;
            let quantidadeDezenasJogadas = 6;
            let quantidadeDezenasPermitidas = 5;





            while(isNaN(quantidadeDezenasEscolhidas) || Math.trunc(quantidadeDezenasEscolhidas)!=quantidadeDezenasEscolhidas )  {

                alert("Atenção!!! Somente números inteiros são permitidos para a escolha da quantidade de dezenas.");
                let input = document.querySelector("input");
                input.focus();
                input.value = "";
                $(quantidadeDezenasEscolhidas).val("");
            }

            while(quantidadeDezenasEscolhidas > 5 || quantidadeDezenasEscolhidas <= 0 ) {

                alert("Atenção!!! Entrada inválida. Escolha no mínimo 1 dezena e no máximo 5 dezenas.");
                let input = document.querySelector("input");
                input.focus();
                input.value = "";
                $(quantidadeDezenasEscolhidas).val("");
            }

            while(numero <= quantidadeDezenasEscolhidas) {

                let achou = false;
                let numerosEscolhidos = (prompt("Escolha um número para a dezena " + numero));

                if (numerosEscolhidos==null){
                    input.value = "";
                    input.focus();
                    return;
                } else {
                    numerosEscolhidos = parseInt(numerosEscolhidos);
                }


                while(numerosEscolhidos > 60 || numerosEscolhidos <= 0 || isNaN(numerosEscolhidos)) {

                    alert("Número não permitido. Os números válidos para a Mega Sena são do 1 ao 60.");
                    numerosEscolhidos = "";
                    numerosEscolhidos = (prompt("Escolha um número para a dezena " + numero));

                    if (numerosEscolhidos==null){
                        input.value = "";
                        input.focus();
                        return;
                    } else {
                        numerosEscolhidos = parseInt(numerosEscolhidos);
                    }

                }

                for(let posicao = 0; posicao < megaSena.length; posicao++) {

                    achou = false;

                    if(megaSena[posicao] == numerosEscolhidos) {

                        achou = true;
                        alert("Esse número já foi escolhido. Por favor, escolha outro número diferente.");
                        break;
                    }
                }

                if(achou == false) {

                    megaSena.push(numerosEscolhidos);
                    numero++;
                }
            }


            while(quantidadeDezenasEscolhidas < quantidadeDezenasJogadas) {

                let achou = false;
                let numerosAleatorios = sorteia();

                for(let posicao = 0; posicao < megaSena.length; posicao++) {

                    if(megaSena[posicao] == numerosAleatorios) {

                        achou = true;
                        break;
                    }
                }

                if(achou == false) {

                    megaSena.push(numerosAleatorios);
                    quantidadeDezenasEscolhidas++;
                }    
            }

            megaSena.sort(function(a,b){return a - b});

            alert("Os números escolhidos são: " + megaSena + " Boa Sorte!!!");
            input.value = "";
            input.focus();

        }


    </script>    
</body>
</html>

Fala André, tudo bem?

Desculpe a demora em responder, mas estava punk o trabalho, correria total. Mas agora consegui analisar com calma.

Sensacional, solução simples e eficaz. E agora, mais duas coisas que aprendi com a ajuda de vcs. Testei aqui o código e ficou lindão. Muito obrigado!!!

Vamos em frente, um grande abraço!

Imagina cara, nós moderadores que temos que estar prontos para responder vocês. Nós respeitamos a sua rotina, responda quando der, não se preocupe.

E que bom que gostou do código !

Bons estudos!!!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software