Código Javascript :
var Bingo = { min: 01, max: 90, numerosSorteados: new Array(), windowDocument: null, init: function(parent){ this.windowDocument = parent; this.bind(); }, bind: function(){ $("#boton-borrar-todo").click(function(){ Bingo.botonBorrarTodoAction(); }); $("#boton-jugar").click(function(){ Bingo.botonJugarAction(); }); $(".texto").click(function(){ Bingo.seleccionarTipoJuego(this); }); $("#boton-sortear").click(function(){ Bingo.jugar(); }); $(".wp-pagenavi-span").click(function(){ Bingo.seleccionarBolaAction($('#' + this.id)); }); }, seleccionarTipoJuego: function(boton){ if(!$(boton).hasClass( "texto-seleccionado" )){ $(boton).addClass('texto-seleccionado', 1000, 'easeOutQuart'); var aux = $(boton).attr('id'); switch(aux){ case 'boton-terna': $('#boton-linea').removeClass('texto-seleccionado', 500, 'easeOutQuart'); $('#boton-bingo').removeClass('texto-seleccionado', 500, 'easeOutQuart'); break; case 'boton-linea': $('#boton-terna').removeClass('texto-seleccionado', 500, 'easeOutQuart'); $('#boton-bingo').removeClass('texto-seleccionado', 500, 'easeOutQuart'); break; case 'boton-bingo': $('#boton-terna').removeClass('texto-seleccionado', 500, 'easeOutQuart'); $('#boton-linea').removeClass('texto-seleccionado', 500, 'easeOutQuart'); break; } } else { $(boton).removeClass('texto-seleccionado', 1000, 'easeOutQuart'); } }, botonBorrarTodoAction: function(){ window.top.location.reload(); }, botonJugarAction: function(){ bootbox.dialog({ message: "<p>Quiere activar<br/>el modo automatico</p>", title: "", buttons: { danger: { label: "No", className: "btn-danger", callback: function() { } }, main: { label: "Si", className: "btn-primary", callback: function() { bootbox.hideAll(); Bingo.numerosSorteados = new Array(); // ---------- Aqui el modo automatico con el retardo // --- este es el body---- <input class="botonStop" type="button" id="stop" value="Pausar"> // --- <input class="botonAuto" type="button" id="boton-jugar" value="Automatico"> // --- <input class="botonStart" type="button" id="start" value="Play"> var milisegundos = 3000; var x = 0; $(document).ready(function() { $(":button#start").bind("click", function() { timer = setInterval('Bingo.jugar()', milisegundos); }); $(":button#stop").bind("click", function() { timer = clearInterval(timer); }); }); // ------------------- Bingo.jugar(); } } } }); }, anularBola: function(numero){ $('#bola-actual').html('-'); $('#bola-salio-'+numero).remove(); $('#bola-'+numero).removeClass('wp-pagenavi-span-bola-salio'); $('#bola-'+numero).addClass('wp-pagenavi-span'); }, seleccionarBolaAction: function(bola){ if(bola.hasClass( "wp-pagenavi-span-bola-salio" )){ console.log("La bola seleccionada YA SALIO!"); } else{ var n = bola.html(); console.log('Numero marcado: ' + n); this.generarBolaGigante(n); this.marcarBolaYaSalio(bola); this.numerosSorteados.push(n); console.log(this.numerosSorteados); } }, marcarBolaYaSalio: function(bola){ bola.addClass('wp-pagenavi-span-bola-salio', 1000, 'easeOutExpo', function(){ bola.removeClass('wp-pagenavi-span'); var numero = bola.html(); $('#bola-actual-flotante').remove(); $('#ultimas-6').prepend('<span class="wp-pagenavi-span-bola-salio" onclick="Bingo.anularBola(\''+numero+'\');" id="bola-salio-'+numero+'">'+numero+'</span>'); } ); }, generarBolaGigante: function(numero){ $('#bola-actual').html(numero); $( window.document.body ).prepend('<span class="bola-actual-flotante" id="bola-actual-flotante">'+numero+'</span>'); $( ".bola-actual-flotante" ).position({ of: $('#left-content') }); }, generarNumeroAleatorio: function() { // -----Aqui añadido 1 para evitar la repeticion while (repe != false) // ----- var n = Math.floor(Math.random() * (Bingo.max - Bingo.min + 01)) + Bingo.min; if(n < 10){ n = "0" + n.toString(); // -----Aqui añadido 2 para evitar la repeticion var repe:Boolean = repetido(n); } Bingo.numerosSorteados.push(n); return n; // ----- } // -----Aqui añadido 3 para evitar la repeticion function repetido(n:Number):Boolean { var repe:Boolean = false; for (i=0; i<Bingo.numerosSorteados.length; i++) { if (n == Bingo.numerosSorteados[i]) { repe = true; } } return repe; } // ----- console.log('Numero generado: ' + n.toString()); // -----Aqui añadido para el audio document.all.sound.src =n +'.mp3'; console.log('Mi audio es '+n+'.mp3'); // ----- return n.toString(); }, jugar: function(){ console.log(_.size(Bingo.numerosSorteados)); if(_.size(Bingo.numerosSorteados) >= (Bingo.max)){ Bingo.showMensajeJuegoFinalizado(); return; } var n = Bingo.generarNumeroAleatorio(); if(_.contains(Bingo.numerosSorteados, n)){ // controlar que aqui si ya tiene todos los numeros no genere infinitamente console.log('Numero sorteado ya salio: ' + n); Bingo.jugar(); } else{ Bingo.seleccionarBolaAction($('#bola-' + n)); } }, showMensajeJuegoFinalizado: function(){ bootbox.dialog({ message: "<p>Todos los números ya fueron sorteados.<br/>Desea LIMPIAR la pizarra?</p>", title: "El Juego a finalizado", buttons: { danger: { label: "No", className: "btn-danger", callback: function() { } }, main: { label: "Si, limpiar", className: "btn-primary", callback: function() { bootbox.hideAll(); Bingo.botonBorrarTodoAction(); } } } }); } }; $( window.document ).ready(function() { Bingo.init(this); });
El script esta funcionando perfectamente. solo le queda que no repita numeros, y al ser posible, suprimir el botom automatico y que se active con el boton start (Play) de modo que active el "setInterval" y la opcion "Si" al mismo tiempo.
script Para el modo automático:
botonJugarAction: function(){
bootbox.dialog({
message: "<p>Quiere activar<br/>el modo automatico</p>",
title: "",
buttons: {
danger: {
label: "No",
className: "btn-danger",
callback: function() {
}
},
main: {
label: "Si",
className: "btn-primary",
callback: function() {
bootbox.hideAll();
Bingo.numerosSorteados = new Array();
// ---------- Aqui el modo automatico con el retardo
var milisegundos = 3000;
var x = 0;
$(document).ready(function() {
$(":button#start").bind("click", function() {
timer = setInterval('Bingo.jugar()', milisegundos);
});
$(":button#stop").bind("click", function() {
timer = clearInterval(timer);
});
});
Bingo.jugar();
}
}
}
});
},
// -------------------
Los Botones Para el modo automático:
<input class="botonStop" type="button" id="stop" value="Pausar">
<input class="botonAuto" type="button" id="boton-jugar" value="Automatico">
<input class="botonStart" type="button" id="start" value="Play">
El script Para inpedir la repeticion de números:
generarNumeroAleatorio: function() {
// -----Aqui añadido 1 para evitar la repeticion
while (repe != false)
// -----
var n = Math.floor(Math.random() * (Bingo.max - Bingo.min + 01)) + Bingo.min;
if(n < 10){
n = "0" + n.toString();
// -----Aqui añadido 2 para evitar la repeticion
var repe:Boolean = repetido(n); } Bingo.numerosSorteados.push(n); return n;
// -----
}
// -----Aqui añadido 3 para evitar la repeticion
function repetido(n:Number):Boolean { var repe:Boolean = false; for (i=0; i<Bingo.numerosSorteados.length; i++) { if (n == Bingo.numerosSorteados[i]) { repe = true; } } return repe; }
// -----