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

Desafio Final

Oi! Ainda não consigo ordenar bem a lógica do programa, assim gostaria que alguém me ajudasse se estou no caminho certo quanto a criação das funções e ordenação do exercício Desafio Final. Segue:

<input type="text" id="numero" />
<input type="submit" value="Digite seu número da sorte!" id="verificar" />

<script>

var nrDaSorte = [2;14;27;35;48;51];

var nrChutado = [];

var adicionarnrChutado = function() {
    var chute = prompt("Digite seu número da sorte") {
        var numero = document.getElementById("numero").value;
            for(var nrChutado = 0; nrChutado <= 6; i++) {
                nrChutado.push(numero);
                console.log(nrChutado);
                  if(nrChutado <= 6) continue;
          }
}

var verificarnrChutado = function() {
     if(nrChutado == nrDaSorte) {
        alert("Você acertou" + nrChutado);
        return;
      }
}

var botaoverificar = document.getElementById("verificar");
botaoverificar.onclick = botaoClicado

</script>
12 respostas

Olá amigo, bom o se código apresanta alguns erros:

<script>
//sugiro que você assista novamente as aulas de arrays, antes de tentar fazer o exercício.

var nrDaSorte = [2;14;27;35;48;51]; //o curso não pede para você criar um array pronto... pede pra fazer um código q sortei 6 numeros de 0 a 60...
var nrChutado = [];// esse array foi declarado corretamente...
var adicionarnrChutado = function() {
    //utilizar o prompt não é necessário, pois os dados do usuário já serão obtidos por meio do "document.getElementById()"
    var chute = prompt("Digite seu número da sorte") { //pq os colchetes?
        var numero = document.getElementById("numero").value; //essa parte do código está correta...
            for(var nrChutado = 0; nrChutado <= 6; i++) { //aqui você está usando o "nrChutado" como valor inicializador do loop?
                nrChutado.push(numero);// isso tb tá correto...
                console.log(nrChutado); //se vc deseja ver todos números q o usuário adicionou até agora, está correto...
                  if(nrChutado <= 6) continue; //gostei desse raciocínio do continue!
          }
}
var verificarnrChutado = function() {
    //essa função está praticamente toda incorreta...
     if(nrChutado == nrDaSorte) {
        alert("Você acertou" + nrChutado);
        return;
      }
}


var botaoverificar = document.getElementById("verificar");
botaoverificar.onclick = botaoClicado //a função que você criou para desempenhar essa tarefa não é "botaoClicado", é "adicionarnrChutado"...
</script>

Dê uma olhada no meu código... Talvez você entenda melhor como deve funcionar seu programa...

<meta charset="UTF-8">

<input type="submit" value="Iniciar jogo!" id="iniciar"/>

<script>

var sorteados = []
var chutados = []

var sortearNum = function(){
    console.log("sorteando os numeros")
    sorteados = []
    for(var i = 1; i < 6; i++){
        console.log("for 1");
        var numSorteado = Math.round( Math.random()*60 );
        if(sorteados.length == 0){
            console.log("if 1");
            sorteados.push(numSorteado);
        }else{
            console.log("else 1");
            var jaAdd = false
            for(var i=0; i < sorteados.length; i++){
                console.log("for 2");
                if(sorteados[i] == numSorteado){
                    console.log("if 2");
                    i--
                    jaAdd= true
                    break;
                };
            };
            if(jaAdd == false){
                console.log("if 3");
                sorteados.push(numSorteado);
            };
        };
    };
    console.log(sorteados)
    console.log("fim da função")
    return sorteados
};

var adicionarNum = function(){
    console.log("adicionando os numeros");
    chutados = []
    for(var i = 0; i < 6; i++){
        console.log("for 1")
        var numChutado = parseInt( prompt("Qual numero você deseja adionar? Restam " + (6-i) + "!") );
        console.log(numChutado)
        while( numChutado < 0 || numChutado > 60 || (numChutado+'') == "NaN" ){
            console.log("while 1")
            numChutado = parseInt( prompt("O número que você digitou não entá no intervado de 0 a 60! Tente novamente!") );
        };
        if(chutados.length == 0){
            console.log("if 1")
            chutados.push(numChutado)
        }else{
            console.log("else 1")
            var jaAdd = false

            serchingRepetition:{
            for(var i2 = 0; i2 < chutados.length; i2++){
                console.log("for 2");
                if(chutados[i2] == numChutado){
                    console.log("if 2");
                    jaAdd = true
                    break serchingRepetition;
                };
            };};
            if(jaAdd == true){
                i--
                alert("O " + numChutado + " já foi adicionado. Tente outro!")
            }else{
                console.log("if 3")
                chutados.push(numChutado);
            };
        };
        if(i > 4 ){
            alert("Os números adicionados foram: " + chutados + ".");
        };
        //console.log(chutados)
    };
    console.log(chutados);
    console.log("fim da função");
    return chutados;
};

var comparar = function(sorteados,chutados){
    console.log("comparando dados")
    var acertos = 0
    for(var i = 0; i < chutados.length; i++){
        console.log("for 1")
        for(i2 = 0; i2 < sorteados.length; i2++){
            console.log("for 2")
            if( chutados[i] == sorteados [i2] ){
                console.log("if 1")
                acertos++
            };
        };
    };
    console.log("fim da função")
    return acertos;
};

var jogar = function(){
    if( confirm("Para jogar na mega sena, você precisa enviar os 6 números (de 0 a 60) do seu jogo. Esses valores serão comparados com mais seis sorteados pelo computador, dando, no final, o seu número de acertos. Vamos lá?") ){
        var chance = (6/60)*(5/59)*(4/58)*(3/57)*(2/56)*(1/55)* 100;
        alert("Você é ambioso? Quer acertar todos os 6 númmeros? Sua chance é de " + chance + "%. Boa sorte!" )
        var acertos = comparar( sortearNum(),adicionarNum() );
        if(acertos >= 3){
            if(acertos < 6){
                alert("Quantos? " + acertos + "? Nossa! Você é muito bom(a) nisso! Jogue novamente! Vamos em rumo aos seis!");
            }else{
                alert("Quanto " + acertos + "? Nossa!!! Você é algum semideus???")
            };    
        }else{
            if(acertos > 0){
                alert("Parabéns! Você acertou " + acertos + " números!");
            }else{alert("Que pena, você não acertou nenhum número! Jogue novamente!")};
        };
    }else{alert("Ok! Quando quiser jogar, clique no botão iniciar!")
    };
    // suas chances de acertar são: Math.round( (6/60)*(5/59)*(4/58)*(3/57)*(2/56)*(1/55) )
};

var botaoIniciar = document.getElementById("iniciar");
botaoIniciar.onclick = jogar;

</script>

Como meu código está um pouco mais complexo que o esperado, sugiro que primeiro vc salve ele num arquivo html e jogue o jogo...

Ok, Marcus. Vou fazer isso sim. Obrigada pela ajuda.

De nada! Qualquer dúvida é só falar!

Olá, terminei o meu aqui. Dá uma olhada: ``

<meta charset="UTF-8">
<input type="text" id="num"/>

<input type="submit" value="Inserir Palpite" id="botao"/>

<script>
var palpite = document.getElementById("num");
var botaoInserir = document.getElementById("botao");

var sorteados = [];

for(var i = 0; i < 6; i++){
    var numero = Math.round(Math.random()*60);

    if(sorteados.length == 0){
        sorteados[i] = numero;
        continue;
    };

    var valido = true;

    for(var x = 0; x < sorteados.length; x++){
        if(numero == sorteados[x]){
            i--;
            valido = false;
            break;
        };
    };

    if(valido == true){
        sorteados[i] = numero;
    };    
};

console.log(sorteados);

var palpites = [];

var inserirPalpite = function(){

    if(palpites.length >= 6){
        alert("Você atingiu o número máximo de palpites!");
        return;
    };

    if(palpite.value == ""){
        alert("Caixa de texto vazia. Favor inserir um número!");
        return;
    };

    if(palpite.value <= 0 || palpite.value > 60){
        alert("Número inválido! Tente novamente!");        
        palpite.value = "";
        return;
    };

    if(palpites.length == 0){
        palpites.push(palpite.value);
        console.log(palpites);
        palpite.value = "";
        return;
    };

    var valido = true;

    for(var i = 0; i < palpites.length; i++){
        if(palpite.value == palpites[i]){
            valido = false;
            break;
        };
    };

    if(valido == true){
        palpites.push(palpite.value);
        console.log(palpites);
        palpite.value = "";
    } else{
        alert("Número já inserido! Tente novamente!");
        palpite.value = "";
    };    

    if(palpites.length == 6){
        verificarAcertos(sorteados, palpites);
    };
};

var verificarAcertos = function(sorteados, palpites){
    var acertos = 0;

    for(var x = 0; x < palpites.length; x++){
        for(var y = 0; y < sorteados.length; y++){
            if(palpites[x] == sorteados[y]){
                acertos++;
                break;
            };    
        };
    };

    if(acertos == sorteados.length){
        alert("Uau! Parabéns, você acertou todos os números sorteados!!!");
    } else{ 
        if(acertos == 0){
            alert("Que pena, você não acertou nenhum número!!!");
        } else{
            alert("Você acertou " + acertos + " dos 6 números sorteados!");
        };
    };
};

botaoInserir.onclick = inserirPalpite;

</script>

``

Fala Galera, segue o meu código

<meta charset="UTF-8">

<input type="submit" id="comecar" value="Iniciar Mega Sena Furada" />

<script>
    var bingo = [];
    var palpites = [];
    var quantidadeNumerosBingo = 6;
    var numeroMaximo = 60;

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

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

    function sortearNumero(){
        var numeroJaSorteados = false;

        while(bingo.length < quantidadeNumerosBingo){

            var numeroSorteado = Math.round(Math.random() * numeroMaximo);

            for(var j = 0; j < bingo.length; j++){
                if(bingo[j] == numeroSorteado){
                    numeroJaSorteados = true;
                    break;
                }
            }

            if(!numeroJaSorteados)
                bingo.push(numeroSorteado);
        }
    };

    function inserirPalpite()
    {
        var numeroPalpite = parseInt(prompt("Por favor digite o seu palpite de numero " + (palpites.length + 1)));
        var verificarPalpiteRealizado = false;

        if(isNaN(numeroPalpite) || numeroPalpite > numeroMaximo){
                verificarPalpiteRealizado = true;
                alert("Palpite Inválido, informe um valor entre 1 - " + numeroMaximo);
                inserirPalpite();
        }else{
            for(var i = 0; i < palpites.length; i++){
                if(palpites[i] == numeroPalpite)
                    verificarPalpiteRealizado = true;
            }

            if(!verificarPalpiteRealizado)
                palpites.push(numeroPalpite);
            else{
                alert("Não foi possível inserir seu palpite, você já informou esse mesmo número anteriormente");
                inserirPalpite();
            }
        }
    }

    function exibirBingo(){
        mostra("Os números referentes a este sorteio foram: ");

        bingo.sort(function(a, b){return a-b});
        for(var i = 0; i < bingo.length; i++)
            document.write(bingo[i] + " ");

        pularLinha();
    }

    function exibirPapites(){
        mostra("Os números jogados foram: ");

        palpites.sort(function(a, b){return a-b});
        for(var i = 0; i < palpites.length; i++)
            document.write(palpites[i] + " ");

        pularLinha();
    }

    function calcularAcertos(){
        var quantidadeAcertos = 0;

        for(var i = 0; i < bingo.length; i++)
            for(var j = 0; j < palpites.length; j++){
                if(palpites[j] == bingo[i])
                    quantidadeAcertos++;
            }

        return quantidadeAcertos;
    }

    function mensagemPontuacao(numeroAcertos)
    {
        mostra("Você fez " + numeroAcertos + " pontos");

        if(numeroAcertos < 4)
            mostra("Infelizmente não foi dessa vez, tente novamente!");
        else if(numeroAcertos == 4 )
            mostra("Você acertou uma QUADRA, passe em uma Loterica para resgatar o premio.");
        else if(numeroAcertos == 5)
            mostra("Você acertou uma QUINA, passe em uma Loterica para resgatar o premio.");
        else
            mostra("Parabéns!!! Você é o mais novo milionário do Brasil!!!!!");
    }

    var start = function(){
                    sortearNumero();
                    console.log(bingo);

                    alert("Bem vindo a Mega Sena Furada! \n Você tem direito a 6 palpites com números entre 1 e 60. \n Boa Sorte.")

                    for(var i = 0; i < quantidadeNumerosBingo; i++)
                        inserirPalpite();

                    exibirBingo();
                    exibirPapites();
                    mensagemPontuacao(calcularAcertos());
                    iniciarGame.show();
                }

    var iniciarGame = document.getElementById("comecar");
    iniciarGame.onclick = start;
</script>

Aí galera, pra quem quiser dar uma olhada, ta aí!! Abraços

<meta charset="UTF-8" >
<h4>TREINE PARA A MEGA DA VIRADA!!</h4>
<h5>Clique em JOGAR e escolha seus números de sorte!!!</h5>
<input type="submit" value="JOGAR" id="jogar" />
<br>
<h5>Depois clique em SORTEAR e boa sorte!!!</h5>
<input type="submit" value="SORTEAR" id="sortear" />
<script>
    var sorteados = [];
    var chutados = [];
    var quantidadeNumeros = 1;
    var acertos = 0;
    //Imprime na tela
    var mostra = function(frase) {
        document.write(frase);
    }
    //Pula uma linha
    var pulaLinha = function() {
        document.write("<br><br>");
    }
    //Início do Adicionar números Chutados pelo usuário
    var adicionarChutes = function() {
        for (var n = 0; n < 6; n++) {
            var chute = prompt("Digite o " + quantidadeNumeros + "º número:");
            if (chute > 60 || chute <= 0 || chute == "") {
                alert("Favor digitar um número válido entre 1 e 60!");
                return adicionarChutes();
            } 
            for (var i = 0; i < chutados.length; i++) {
                if (chutados[i] == chute) {
                    alert("Número já digitado! Digite outro de 1 a 60");
                    return adicionarChutes();
                }
            }
            chutados.push(chute);
            console.log(chutados);
            quantidadeNumeros++;
            if (quantidadeNumeros > 6) {
                alert("Pronto! Você jogou os seguintes números: " + chutados[0] + "," + chutados[1] + "," + chutados[2] + "," + chutados[3] + "," + chutados[4] + "," + chutados[5] + ". Clique em 'SORTEAR' e Boa sorte!!");
                return;
            }
        }
    }
    var jogar = document.getElementById("jogar");
    jogar.onclick = adicionarChutes; 
    //Fim do Adicionar números Chutados pelo usuário

    //Início do Adicionar números Sorteados e comparar com números Chutados
    var adicionarSorteados = function () {
        for(var s = 0; s < 6; s++) {
            var aleatorio = Math.round(Math.random() * 100 * 0.6);
            sorteados.push(aleatorio);
            console.log(sorteados);
        }
        //Início da comparação
        for(var x = 0; x < sorteados.length; x++){
            for(var y = 0; y < chutados.length; y++){
                if(chutados[y] == sorteados[x])
                    acertos++;
            }
        }
        //Fim da comparação
        if (chutados.length == 0) {
            mostra("Você não jogou :/ !!! Aperte F5, clique em 'JOGAR' e faça seu palpite!! É de graça!!!");
        } else { if (acertos != 6) {
                    mostra("Números jogados: " + chutados[0] + "," + chutados[1] + "," + chutados[2] + "," + chutados[3] + "," + chutados[4] + "," + chutados[5]) + ".";
                    pulaLinha();
                    mostra("Números Sorteados: " + sorteados[0] + "," + sorteados[1] + "," + sorteados[2] + "," + sorteados[3] + "," + sorteados[4] + "," + sorteados[5]) + ".";
                    pulaLinha();
                    mostra("Sua quantidade de acertos foram: " + acertos + ".");
                    pulaLinha();
                    mostra("Obs: A chance de você ganhar na MEGA SENA é de aproximadamente 1 em 50 milhões, vai continuar tentando????? Pense bem!!");
                } else {
                    mostra("Aowwwwwwwwwwwwwwwww!!!! Jesuis amado!!! Você acabou de ganhar 250 milhões de reais!!! Sai desse PC agora e vai comemorar!! hahaha");
                }
        }
    }
    var sortear = document.getElementById("sortear");
    sortear.onclick = adicionarSorteados;
    //Fim do Adicionar números Sorteados e comparar com números Chutados    
</script>

Segue meu código ai pra quem quiser:

<meta charset="UTF-8">
<input type="text" id="num0" /><br />
<input type="text" id="num1" /><br />
<input type="text" id="num2" /><br />
<input type="text" id="num3" /><br />
<input type="text" id="num4" /><br />
<input type="text" id="num5" /><br />
<input type="submit" value="Adicione para sorteio." id="verificar" /><br />
<input type="submit" value="Conferir sorteio." id="conferir" />

<script>
var loteria = [];
var numero = [];

for (var i = 0; i < 6; i++) {
    var valor = Math.round(Math.random() * 60);
    loteria.push(valor);
};

var verificarLotera = function() {
    for (var i = 0; i < 6; i++) {
        var valor = document.getElementById('num' + i).value;
        numero.push(valor)
    }
};

var conferirSorteio = function() {
    var cont = 0;
    for(var i = 0; i < 6; i++) {
        for(var j = 0; j < 6; j++) {
            if(numero[i] == loteria[j]){
                cont++;
            }
        }
    }

    mostra("Você acertou " + cont + " números.");
    mostra("Seus números são: " + numero + ".");
    mostra("Os números da loteria são: " + loteria + "");

};


var botaoUm = document.getElementById('verificar');
botaoUm.onclick = verificarLotera;

var botaoDois = document.getElementById('conferir');
botaoDois.onclick = conferirSorteio;

var mostra = function(frase) {
    document.write(frase + "<br />");
};

</script>
solução!

Galera, super válido compartilhar o código, mas tentemos nos ater ao tema inicial do tópico e ajudar mais efetivamente a pessoa que procurou ajuda. Zelma, como dito pelo Marcus, seu programa tem alguns probleminhas, e nós quando apontamos é sempre bom dar um norte de como resolver, então vamos lá!

Como citado, devemos criar o array de números inteiros sorteados, devemos utilizar a função Math.random() em conjunto com a função Math.round() aprendidas durante o curso. Então para facilitar podemos criar uma função que sorteie os seis número aleatórios e nos retorne o array, ficando assim:

  var sorteiaNumeros = function() {
    var loteria = [];
    // adicionei uma condicao para garantir numeros nao repetidos
    while (loteria.length < 6) {
      var sorteado = Math.round(Math.random() * 60);
      var repetido = false;
      for (var i = 0; i < loteria.length; i++) {
        if (loteria[i] == sorteado) {
          repetido = true;
        }
      }
      if (!repetido) { //se nao for repetido adiciona
        loteria.push(sorteado);
      }
    }
    return loteria;
  }

Como você optou por obter as informações via prompt, não é necessário o input. Além disso, sua função de obtenção dos números do usuário está confusa e errada na utilização do array, para consertar, apenas pergunte ao usuário 6 vezes pelos números e retorne eles, em uma função assim:

  var perguntaNumeros = function() {
    var palpites = [];
    // adicionei condicao para garantir numeros distintos do usuario
    var i = 1;
    while (palpites.length < 6) {
      // lembre-se que o prompt retorna string por isso transformamos em int
      var numero = parseInt(prompt("Digite o seu palpite numero " + i + ":"));

      var repetido = false;
      for (var j = 0; j < palpites.length; j++) {
        if (palpites[j] == numero) {
          repetido = true;
        }
      }
      if (!repetido) { //se nao for repetido adiciona
        palpites.push(numero);
        i++;
      } else {
        alert("Numero repetido!");
      }

    }
    return palpites;
  }

Agora, precisamos validar se o usuário acertou, portanto fazemos uma função que retorna o numero de acertos, porém de maneira parametrizada, afim de poder ser reutilizada para diversas combinações:

  var verificarResultado = function(loteria, palpites) {
    var acertos = 0;
    for (var i = 0; i < loteria.length; i++) {
      for (var j = 0; j < palpites.length; j++) {
        if (palpites[j] == loteria[i]) {
          acertos++;
        }        
      }
    }
    return acertos;
  }

Agora criamos uma função que utiliza as demais para executar o jogo e associamos ao botão:

  var jogar = function() {
    var loteria = sorteiaNumeros();
    var palpites = perguntaNumeros();

    console.log("sorteados: " + loteria);
    console.log("palpites: " + palpites);

    var acertos = verificarResultado(loteria, palpites);
    if (acertos == 6) {
      alert("Parabens, voce ganhou!");
    } else {
      alert("Que pena, você acertou " + acertos + " numeros. tente de novo!");
    }
  }

  var botaoJogar = document.getElementById("jogar");
  botaoJogar.onclick = jogar;

Colocando tudo em um bloco só para facilitar a cópia temos como resultado:

<input id="jogar" type="submit" value="Jogar!" />
<script>
  var sorteiaNumeros = function() {
    var loteria = [];
    // adicionei uma condicao para garantir numeros nao repetidos
    while (loteria.length < 6) {
      var sorteado = Math.round(Math.random() * 60);
      var repetido = false;
      for (var i = 0; i < loteria.length; i++) {
        if (loteria[i] == sorteado) {
          repetido = true;
        }
      }
      if (!repetido) { //se nao for repetido adiciona
        loteria.push(sorteado);
      }
    }
    return loteria;
  }

  var perguntaNumeros = function() {
    var palpites = [];
    // adicionei condicao para garantir numeros distintos do usuario
    var i = 1;
    while (palpites.length < 6) {
      // lembre-se que o prompt retorna string por isso transformamos em int
      var numero = parseInt(prompt("Digite o seu palpite numero " + i + ":"));

      var repetido = false;
      for (var j = 0; j < palpites.length; j++) {
        if (palpites[j] == numero) {
          repetido = true;
        }
      }
      if (!repetido) { //se nao for repetido adiciona
        palpites.push(numero);
        i++;
      } else {
        alert("Numero repetido!");
      }

    }
    return palpites;
  }

  var verificarResultado = function(loteria, palpites) {
    var acertos = 0;
    for (var i = 0; i < loteria.length; i++) {
      for (var j = 0; j < palpites.length; j++) {
        if (palpites[j] == loteria[i]) {
          acertos++;
        }        
      }
    }
    return acertos;
  }

  var jogar = function() {
    var loteria = sorteiaNumeros();
    var palpites = perguntaNumeros();

    console.log("sorteados: " + loteria);
    console.log("palpites: " + palpites);

    var acertos = verificarResultado(loteria, palpites);
    if (acertos == 6) {
      alert("Parabens, voce ganhou!");
    } else {
      alert("Que pena, você acertou " + acertos + " numeros. tente de novo!");
    }
  }

  var botaoJogar = document.getElementById("jogar");
  botaoJogar.onclick = jogar;
</script>

O legal é ir separando as necessidades do seu programa e modularizando em funções. Caso suas dúvidas tenham sido esclarecidas, peço que selecione a resposta que melhor lhe ajudou e marque como resolvido, a fim de evitar postagens a mais desnessárias. Obrigado!

Pessoal, muito obrigada a todos. Cada uma das soluções apresentadas foi importante, pois foram apresentadas diversas variáveis das quais não havia pensado e também a organização da lógica que cada um apresentou me alertou para ter mais atenção, pois fui muito simplista no raciocínio.

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