Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

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.