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

programa bingo (codigo)

Boa noite; Estou tentando fazer um programinha de bingo, aproveitando exemplos das aulas, porém quero fazer algumas validações: Não pode ter numeros repetidos e têm que ser maior que zero. Ja consegui gerar os numeros aleatórios (Math.random), mas não consigo fazer as validações...

desde ja fico grato pela ajuda... Abaixo esta o código que comecei

<meta charset="utf8">

input type="submit" value="Adicione o numero aos ja sorteados" id="verificar" />



var sorteados = [];
var valorMaximo = 2;
var adicionarSorteado = function(){


var numero = Math.round(Math.random() *10);
    for (var i = 0; i < valorMaximo; i++){
        if(sorteados[i] == numero && sorteados[i] > 0){
        alert("Número já sorteado ou igual a zero!");
        return;
            }
        }
sorteados.push(numero);
console.log(sorteados);

}

var botao = document.getElementById("verificar");
botao.onclick=adicionarSorteado;
6 respostas
solução!

Oi Glauco!

Tentei dar uma refatorada no seu código, de uma olhada.

<meta charset="utf8">

<input type="submit" value="Adicione o numero aos ja sorteados" id="verificar" />
<script>
    var sorteados = []; 

    var adicionarSorteado = function(){

        var numero = Math.round(Math.random()*10); 

        if(numero!=0){
            for (var i = 0; i < sorteados.length; i++){ 
                if(sorteados[i] == numero ){ 
                    console.log("Número já sorteado"); 
                    return; 
                }
            } 
            sorteados.push(numero);
            console.log(sorteados);
        }
    };

    var botao = document.getElementById("verificar"); 
    botao.onclick = adicionarSorteado;
</script>

Ao invés de perguntar se o número sorteado era igual a algum número do array e maior que 0 eu preferi perguntar logo de cara se o número sorteado era diferente de 0. Dessa forma ele só faz todo o nosso código caso seja maior. Como o Math.Round não vai sortear números negativos, isso resolve nosso problema.

Fique atento ao usar o tamanho do array para guiar o for . O correto é sorteados.length para ele entender que vc quer que ele passe por todas as posições, ou seja o tamanho em si.

Espero ter ajudado :)

Muito Obrigado Josélia, tu sabes se existe alguma maneira de o Math.random não gerar numeros repetidos? Ok, o programa depois da sua ajuda esta muuuuito melhor, mas se tiver um jeito de não gerar numeros repetidos seria o ideal... Outra coisa, gostaria de criar outro botão que quando clicado, mostrasse os numeros "sorteados" para a conferencia das cartelas premiadas, se puder me ajudar agradeço...

Oi Glauco! Que bom que ajudou.

O Math.Random gera números aleatórios. Quem faz a validação é este trecho aqui do for, que já está no código:

if(sorteados[i] == numero ){ 
    console.log("Número já sorteado");
    return; 
}

Veja, se um número sorteado for igual a outro que já está guardado no array, ele sai sai da execução, por conta do return.

Você pode criar um botão, chamar o evento onclick e passar uma função que mostre os sorteador. Ou fazer como eu descrevi no código, com o console.log .

Tente fazer, não tenha medo de experimentar várias maneiras para o seu código.

No começo pode parecer complicado, mas depois que vc entender os conceitos, tirará de letra.

Até!

Pessoal, só mais uma ajudinha... rsss

Seguinte, ja consegui com a ajuda de vocês terminar quase todo o programinha, só ta faltando o seguinte: Quando o botão listar sorteados é clicado, o programa mostra os dados o array, blz, mas se por acaso a cartela "furar" o bingo tem que continuar de onde parou até outra cartela ser validada. Consegui fazer tal verificação, mas quando tento prosseguir inserindo dados no array, adiciona mais 1 numero e para. Preciso que continue inserindo na sequencia do array até que outra pessoa "bata", ok? Grato desde já...

<meta charset="utf-8">

<input type="submit" value="Sortear" id="verificar" />

<input type="submit" value="Listar Sorteados" id="num_sorteados" />


<script>
var pulaLinha = function() {
    document.write("<br>");
};
var mostra = function(frase) {
    document.write(frase);
    pulaLinha();
};  
var sorteados = []; 

    var adicionarSorteado = function(){

        var numero = Math.round(Math.random()*75); 

        if(numero!=0){
            for (var i = 0; i < sorteados.length; i++){ 
                if(sorteados[i] == numero ){ 
                   //alert("Numero já Sorteado   "+numero);
                   //console.log("Número já sorteado"); 
                   return; 
                }
            } 
            sorteados.push(numero);
            alert(numero);
            console.log(sorteados);

        }
    };

    var verify = function(){
        pulaLinha();
        pulaLinha();
        mostra ("<strong> BIIIIIIIIIIIIIINGOOOOOOOOOOOO!!!!!  Os números sorteados foram: </strong>" + sorteados);
        pulaLinha();
        mostra("<strong>Favor conferir com a cartela premiada!</strong>");
         var validar = prompt("A cartela foi validada?");
            if(validar == "Sim"){
            alert("Parabéns ao Ganhador!!!")
            }
        else{
        alert("Ok, vamos continuar então...");
        var numeroConfere = Math.round(Math.random()*75); 

        if(numeroConfere!=0){
            for (var j = sorteados.lenght; j < sorteados.length; j++){ 
                if(sorteados[j] == numeroConfere ){ 
                   alert("Numero já Sorteado   "+numeroConfere);
                   console.log("Número já sorteado"); 

                }
            } 
            sorteados.push(numeroConfere);
            alert(numeroConfere);
            console.log(sorteados);

        }
    }
    }


    var botao = document.getElementById("verificar"); 
    botao.onclick = adicionarSorteado;

    var verificar = document.getElementById("num_sorteados")
    verificar.onclick = verify;
</script>

Oi Glauco,

por favor, ao mandar uma questão, formate seu código adicionando três crases (```) antes e depois do código, para que consigamos ler ele. O botão Formatação no campo de texto tem todas as dicas.

Pelo que eu entendi, o que você queria era não tirar os botões da tela quando alguém diz que ganhou no bingo, correto? Nesse caso, a forma mais fácil é mostrar a informação dos números já sorteados direto no prompt, para que os botões da página não sejam sobrescritos:

var verify = function(){
    var textoDeBingo = "BIIIIIIIIIIIIIINGOOOOOOOOOOOO!!!!!\n\n" +
                        "Os números sorteados foram: " + sorteados + "\n\n" + 
                        "A cartela premiada foi validada?";
    var validou = prompt(textoDeBingo);
    if(validou == "Sim"){
        alert("Parabéns ao Ganhador!!!");
    } else {
        alert("Ok, vamos continuar então...");
    }
}

Como regra geral, toda vez que você sentir vontade de repetir um grande trecho de código, resista a ela. :-) Sua função adicionarSorteado já fazia o for, então basta continuar chamando ela, como antes.

E, por último, marque a resposta da Josélia como correta, por favor! :-) É uma forma legal de mostrar apreciação pelo esforço dos colegas.

Boa noite Cecilia...

Muito obrigado pelas dicas, tanto de formatação do código quanto pela ajuda com o programa em si... Agora esta funcionando redondinho como eu queria... marquei a resposta da Josélia como solução, mas a sua ajuda também foi de grande valia...

Abraço!

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