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

[Dúvida] Jogo mega sena + dúvida.

No primeiro código gerei um jogo de mega-sena aleatoriamente, no segundo gostaria de gerar 6 a partir de um único clique. Alguém possui alguma dica?

<meta charset="UTF-8">


<button>Clique para gerar o jogo aleatoriamente</button>

<script>

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

    }


    function mostra(frase) {

        document.write("O jogo criado aleatóriamente é " + segredos);
        pulaLinha();

    }

    function sorteia() {

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

    // função resposável por gerar um número aleatório. Atalho para RETORNAR o valor.

    function sorteiaNumeros(quantidade){

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade){

            var numeroAleatorio = sorteia();

            if(numeroAleatorio !== 0 && numeroAleatorio <= 60) {
                var achou = false;

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

                if(segredos[posicao] == numeroAleatorio){
                    achou = true;
                    break
                    }
                }

                if(achou == false){
                    segredos.push(numeroAleatorio);
                    numero++;
                }
            }
        }

        return segredos
    }

    // Função sorteiaNumeros, quando chamada na var abaixo declara uma lista vazia por meio de um array. 
    // Em seguida é criado uma var para dar inicio a função levando em conta o número indicado na var abaixo também. 
    // Em seguida, da inicio ao While normalmente.  
    // segredos.push recebe a função de puxar do array da var segredos ainda dentronda função. 

    //Porém ainda terá problemas de repetição com números aleatorios. Para isso, criamos uma nova var numeroAleatorio para termos um mecanismo que só puxe numeros não repetidos. 


    var segredos = sorteiaNumeros(6);

    // Recebe a quantidade de números aleatórios que gostariamos que o programa rodasse. Devolvendo uma lista de números que recebe o nome segredos. 

    console.log(segredos);



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





</script>




----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


 <meta charset="UTF-8">


<button>Clique para gerar o jogo aleatoriamente</button>

<script>

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

    }


    function mostraResultado(frase) {

        document.write("O jogo criado aleatóriamente é " + multiplicaJogos;
        pulaLinha();

    }

    function sorteia() {

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

    // função resposável por gerar um número aleatório. Atalho para RETORNAR o valor.

    function sorteiaNumeros(quantidade){

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade){

            var numeroAleatorio = sorteia();

            if(numeroAleatorio !== 0 && numeroAleatorio <= 60) {
                var achou = false;

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

                if(segredos[posicao] == numeroAleatorio){
                    achou = true;
                    break
                    }
                }

                if(achou == false){
                    segredos.push(numeroAleatorio);
                    numero++;
                }
            }
        }

        return segredos
    }

    // Função sorteiaNumeros, quando chamada na var abaixo declara uma lista vazia por meio de um array. 
    // Em seguida é criado uma var para dar inicio a função levando em conta o número indicado na var abaixo também. 
    // Em seguida, da inicio ao While normalmente.  
    // segredos.push recebe a função de puxar do array da var segredos ainda dentronda função. 

    //Porém ainda terá problemas de repetição com números aleatorios. Para isso, criamos uma nova var numeroAleatorio para termos um mecanismo que só puxe numeros não repetidos. 


    var segredos = sorteiaNumeros(6);

    // Recebe a quantidade de números aleatórios que gostariamos que o programa rodasse. Devolvendo uma lista de números que recebe o nome segredos. 

    console.log(segredos);

    function multiplicaJogos(segredos) {
        for(segredos = 1; segredos <= 6; segredos++);




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





</script>
3 respostas

Olá, Luca, tudo bem?

Analisei o seu código e tenho algumas ressalvas. Ao fazer o segundo botão você copia tags e funções que são únicas, não podem haver mais de uma no mesmo script.

Por exemplo, tags como meta, script e funções que possuem o mesmo nome como pulalinha, sorteia, sorteiaNumeros, devem ser únicas, pois senão haverá conflito no código.

Na função multiplicaJogos, faltou fechá-la com } , além disso, apesar de existir um for dentro dela, não há nenhuma instrução a ser feita.

Pelo que entendi(e me corrija se eu estiver equivocada) você tentou criar dois botões que possuem a mesma funcionalidade, não é?

Quando utilizamos o querySelector para pegar o seletor button, haverá também conflito, pois terá dois botões, para isso teremos que criar um id, que define um identificador exclusivo para cada button.

O código ficará assim:

<meta charset="UTF-8">


<button id="button1">Clique para gerar o jogo aleatoriamente</button>
<button id="button2" >Clique para gerar o jogo aleatoriamente</button>

<script>

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

    }


    function mostra(frase) {

        document.write("O jogo criado aleatóriamente é " + segredos);
        pulaLinha();

    }

    function sorteia() {

        return Math.round(Math.random() * 60);4
    }

    // função resposável por gerar um número aleatório. Atalho para RETORNAR o valor.

    function sorteiaNumeros(quantidade){

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade){

            var numeroAleatorio = sorteia();

            if(numeroAleatorio !== 0 && numeroAleatorio <= 60) {
                var achou = false;

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

                if(segredos[posicao] == numeroAleatorio){
                    achou = true;
                    break
                    }
                }

                if(achou == false){
                    segredos.push(numeroAleatorio);
                    numero++;
                }
            }
        }

        return segredos
    }

    // Função sorteiaNumeros, quando chamada na var abaixo declara uma lista vazia por meio de um array. 
    // Em seguida é criado uma var para dar inicio a função levando em conta o número indicado na var abaixo também. 
    // Em seguida, da inicio ao While normalmente.  
    // segredos.push recebe a função de puxar do array da var segredos ainda dentronda função. 

    //Porém ainda terá problemas de repetição com números aleatorios. Para isso, criamos uma nova var numeroAleatorio para termos um mecanismo que só puxe numeros não repetidos. 


    var segredos = sorteiaNumeros(6);

    // Recebe a quantidade de números aleatórios que gostariamos que o programa rodasse. Devolvendo uma lista de números que recebe o nome segredos. 

    console.log(segredos);



    var button = document.getElementById("button1")
    button.onclick = mostra;
    var button2 = document.getElementById("button2")
    button2.onclick = mostra;


</script>

Mas me deixa saber se esse era realmente o seu objetivo.

Ficarei no aguardo para mais informações.

Abraços.

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Olá, boa tarde. Agradeço a sua resposta.

Fiquei com dúvida em relação aos dois botões que você está me dizendo. São dois programas diferentes separados pela a linha.

O primeiro funciona corretamente. Já o segundo, gostaria que no toque do botão ele sorteasse ao invés de um unico jogo como o primeiro programa, mas 6 jogos com 6 números diferentes.

Utilizando do Control + shift + C consta esse erro Uncaught SyntaxError: Unexpected end of input na linha 82.

<meta charset="UTF-8">


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

<script>

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

    }


    function mostraResultado(frase) {

        document.write("O jogo criado aleatóriamente é " + multiplicaJogos);
        pulaLinha();

    }

    function sorteia() {

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

    // função resposável por gerar um número aleatório. Atalho para RETORNAR o valor.

    function sorteiaNumeros(quantidade){

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade){

            var numeroAleatorio = sorteia();

            if(numeroAleatorio !== 0 && numeroAleatorio <= 60) {
                var achou = false;

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

                if(segredos[posicao] == numeroAleatorio){
                    achou = true;
                    break
                    }
                }

                if(achou == false){
                    segredos.push(numeroAleatorio);
                    numero++;
                }
            }
        }

        return segredos
    }

    // Função sorteiaNumeros, quando chamada na var abaixo declara uma lista vazia por meio de um array. 
    // Em seguida é criado uma var para dar inicio a função levando em conta o número indicado na var abaixo também. 
    // Em seguida, da inicio ao While normalmente.  
    // segredos.push recebe a função de puxar do array da var segredos ainda dentronda função. 

    //Porém ainda terá problemas de repetição com números aleatorios. Para isso, criamos uma nova var numeroAleatorio para termos um mecanismo que só puxe numeros não repetidos. 


    var segredos = sorteiaNumeros(6);

    // Recebe a quantidade de números aleatórios que gostariamos que o programa rodasse. Devolvendo uma lista de números que recebe o nome segredos. 

    console.log(segredos);

    function multiplicaJogos(segredos) {
        for(segredos = 1; segredos <= 6; segredos++);




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

</script>
solução!

Olá, Luca, tudo bem?

Desculpe a demora em obter retorno e muito obrigada pela sua resposta!

Para fazer os 6 jogos, vamos reutilizar a função sorteiaNumeros dentro da função multiplicaJogos:

function multiplicaJogos(quantidadeJogos, quantidadeNumeros) {
    var listaJogos = [];

    for (var i = 0; i < quantidadeJogos; i++){
        listaJogos.push(sorteiaNumeros(quantidadeNumeros));
    }

    return listaJogos;
}

Com os parâmetros quantidadeJogos e quantidadeNumeros conseguimos definir tanto quantos jogos queremos fazer (com o quantidadeJogos), como quantos números teremos por jogos (com o quantidadeNumeros).

Na função, criamos uma lista (listaJogos) que armazenará os jogos criados, e depois usando o for criamos a quantidade de jogos que chegou por parâmetro usando a função sorteiaNumeros, e adicionando em listaJogos usando o listaJogos.push().

Com essa função implementada, chegou a hora de mostramos o resultado, para isso precisamos alterar a função mostraResultado que anteriormente só estava preparada para mostrar um resultado.

function mostraResultado(frase) {
    var listaJogos = multiplicaJogos(6,6);

    for (var i = 0; i < listaJogos.length; i++){
        document.write("O jogo criado aleatóriamente é " + listaJogos[i]);
        pulaLinha();
    }       
}

Agora precisamos conseguir um resultado de multiplicaJogos (nesse caso queremos 6 jogos com 6 números diferentes em cada jogo), armazenamos esse resultado em listaJogos.

Depois basta iterarmos a listaJogos com ajuda do for imprimindo na tela cada um dos jogos.

No final, o seu segundo código fica assim:

<meta charset="UTF-8">


<button>Clique para gerar o jogo aleatoriamente</button>

<script>

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

    }

    function mostraResultado(frase) {
        var listaJogos = multiplicaJogos(6,6);

        for (var i = 0; i < listaJogos.length; i++){
            document.write("O jogo criado aleatóriamente é " + listaJogos[i]);
            pulaLinha();
        }       
    }

    function sorteia() {

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

    // função resposável por gerar um número aleatório. Atalho para RETORNAR o valor.

    function sorteiaNumeros(quantidade){

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade){

            var numeroAleatorio = sorteia();

            if(numeroAleatorio !== 0 && numeroAleatorio <= 60) {
                var achou = false;

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

                if(segredos[posicao] == numeroAleatorio){
                    achou = true;
                    break
                    }
                }

                if(achou == false){
                    segredos.push(numeroAleatorio);
                    numero++;
                }
            }
        }

        return segredos
    }



    var segredos = sorteiaNumeros(6);

    // Recebe a quantidade de números aleatórios que gostariamos que o programa rodasse. Devolvendo uma lista de números que recebe o nome segredos. 

    console.log(segredos);

    function multiplicaJogos(quantidadeJogos, quantidadeNumeros) {
        var listaJogos = [];

        for (var i = 0; i < quantidadeJogos; i++){
            listaJogos.push(sorteiaNumeros(quantidadeNumeros));
        }

        return listaJogos;
    }

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

</script>

Abaixo deixo um gif do resultado:

Gif que mostra o resultado da execução do código. Há um botão de fundo cinza claro escrito em preto "Clique para gerar o jogo aleatoriamente". Ao fazer o clique com o mouse, é gerado 6 jogos distintos, um em cada linha. Em cada linha está escrito "O jogo criado aleatoriamente é" e em seguida os números gerados.  As dezenas compostas são: "12,38,14,17,23,32" ; "30,46,29,24,41,40" ; "51, 41, 7, 43, 31, 50" ; "2, 28, 47, 7, 23, 11" ; "52, 4, 2, 25, 6, 57" ; "30, 58, 23, 51, 8, 29"

Espero ter ajudado.

Caso surja dúvidas, não hesite em compartilhar no fórum.

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!