PHP Programación

Programando un bingo con PHP en 5 minutos

single image

¿Qué haces cuando tus sobrinas quieren jugar al bingo, y solo tienes los cartones? ¿recortar papelitos, escribir los números en ellos y meterlos en una bolsa para ir sacándolos uno a uno?
Pues eso es justo lo que me ha pasado esta tarde, y la solución ha sido programar un pequeño script php en cinco minutos, subirlo a un server y acceder a él desde el móvil. Sí, es una frikada, y sí, podría haberlo hecho en javascript, y no tener que utilizar un servidor, pero en ese momento esto ha sido lo que ha salido.

Screenshot-Bingo-PHP

Si queréis verlo online, desde aquí: ¡bingo!

Y este es el código:

  1. <?php
  2.  
  3. session_start();
  4.  
  5. $numero=-1;
  6. srand((double)microtime()*1000000);
  7. $numero=rand(1,90);
  8. $salida='';
  9.  
  10. if(isset($_POST['finPartida'])){
  11.         $_SESSION['i']=90;
  12.         unset($_POST['finPartida']);
  13. }
  14. if($_SESSION['i']==90){
  15.         $salida='<div class="mensaje">Otra partida?</div>';
  16.         $salida.='<div id="panelControl">
  17.                         <form id="nuevoJuego" method="post" action="bingo.php">
  18.                                 <input type="submit" id="nuevaPartida" name="nuevaPartida" value="NUEVA PARTIDA"/>
  19.                         </form>
  20.                 </div>';
  21.         $_SESSION = array();
  22.  
  23.         if (ini_get("session.use_cookies")) {
  24.                 $params = session_get_cookie_params();
  25.                 setcookie(session_name(), '', time() - 42000, $params["path"], $params["domain"], $params["secure"], $params["httponly"]);
  26.         }
  27.         session_destroy();
  28. }else{
  29.  
  30.         if(isset($_SESSION['cantados'])==FALSE){
  31.  
  32.                 $_SESSION['i']=1;
  33.                 $_SESSION['cantados'][]=$numero;
  34.         }else{
  35.                 while(in_array($numero,$_SESSION['cantados']))   {
  36.                         $numero=rand(1,90);
  37.                 }
  38.                 $_SESSION['cantados'][]= $numero;
  39.                 $_SESSION['i']=$_SESSION['i']+1;
  40.         }
  41.  
  42.         sort($_SESSION['cantados']);
  43.         $salida.='<div class="detalle"># restantes: <span class="negrita">'.(90-$_SESSION['i']).'</span></div>';
  44.         $salida.='<div id="pizarraMain">
  45.                         <div id="pizarraNumero">'.$numero.'</div>
  46.                         <div id="panelControl">
  47.                                 <form method="post" action="bingo.php">
  48.                                         <input type="submit" id="nuevoNumero" name="nuevoNumero" value="NUEVO NUMERO"/>
  49.                                         <input type="submit" id="finPartida" name="finPartida" value="FIN PARTIDA"/>
  50.                                 </form>
  51.                         </div>
  52.                 </div>';
  53.         $salida.='<div id="pizarraResumen"><table>';
  54.  
  55.         $decena=0;
  56.  
  57.         for($num=1;$num<=90;$num=$num+1){
  58.                 if($decena==0)
  59.                         $salida.='<tr>';
  60.  
  61.                 if(in_array($num, $_SESSION['cantados'])){
  62.                         $salida.='<td class="cantado">'.$num.'</td>';
  63.                 }else{
  64.                         $salida.='<td>'.$num.'</td>';
  65.                 }
  66.  
  67.                 if($decena==9)  {
  68.                         $decena=0;
  69.                         $salida.='</tr>';
  70.                 }else
  71.                         $decena++;
  72.         }
  73.  
  74.         $salida.='</table></div>';
  75. }
  76. ?>
  77. <html>
  78. <head><title>Bingoooooo!!!</title>
  79. <style>
  80. body {margin:20px; padding:0px;}
  81. div.mensaje{color:red;padding:20px;font-size:100px;width:100%;text-align:center;}
  82. div#pizarraMain{padding:20px;width:30%;font-size:200px;color:red;float:left;}
  83. div#pizarraNumero{padding-left:100px;width:100%;}
  84. div#panelControl {width:100%;font-size:30px;}
  85. div#pizarraResumen {width:50%;float:left;}
  86. table {font-size:30px;margin:0;padding:0;margin-left:50px;}
  87. td {padding:5px 10px;}
  88. .cantado {color:red;}
  89. .instrucciones {display:none;font-size:20px;width:100%;color:grey;background-color:#efefef;}
  90. .detalle {display:block; font-size:30px;width:100%;}
  91. .negrita {font-weight:bold;}
  92. form {margin:0px;padding:0px; }
  93. input {height:120px;width:190px;font-size:20px;}
  94. form#nuevoJuego{width:100%;text-align:center;}
  95. </style>
  96. </head>
  97. <body>
  98.  
  99. <?php echo $salida;?>
  100.  
  101. </body>
  102. </html>

Todo eso guardado en un archivo .php y subido a un server.

11 Comentarios
  1. Cheli Cheli 12 años ago
    Contestar

    5 minutos, lo que se dicen 5 minutos no creo que fueran jejejejeje. Demasiado código para 5 minutos.

    • Pablo Baenas 12 años ago
      Contestar

      jajaja pues no fueron muchos más la verdad… más sencillito no puede ser.. de hecho no utilicé  js, porque no me acordaba del uso de sesiones y para modificar el DOM..xDD Entre subirlo y demás, no sería más de 10

      • Otto 11 años ago
        Contestar

        Si haces esto en 5 minutos, miedo me da lo que puedas hacer en la práctica de Tecnologías Web 🙂 Un saludo

  2. karurosu 9 años ago
    Contestar

    Que bueno! ya se que han pasado unos cuantos años desde esto…. pero… y ahora algun codigo php para poder generar los cartones y imprimirlos?
    Gracias

  3. Ricardo Bohorquez Suarez 4 años ago
    Contestar

    Hola, estaba haciendo un bingo server, es con android app, tengo 2 app, servidor, cliente

    Ya funciona, el server se maneja automaticamente a lo que abro la app se genera 1 mesa y comienza una cuenta regresiva, las apps interactuan con firebase, todo es automático, en el cliente se elijen tablas, y se inicia la partida cuando el server comienza la partida, pero ahora quiero crear varias mesas al mismo tiempo, entonces como el server va a estar pendiente de varias mesas a la vez, sin que se interrumpan entre ellas, ya que en el server aparece la activity del tablero y debe estar abierta para que corra el programa

    • ES SENCILLO AMIGO, RECURSIVIDAD. Que tal si creamos las tablas en una base de dats, en este caso, firebase, y cada carton tenga su ID, cosa tal que solo se asigne una sola vez a cada usuario, y esto a su vez, similar a la matriz, de este ejercicio en PHP, los vayamos, activando o desactivando de la matriz creada en firebase, y cada carton pueda hacer una peticion de refrescameinto en cada jugada via ajax, o que se compruebe con la pulzacion del jugador y una peticion que se valide en el firebase? si jugo o no la el numero de la ficha.? algo asi se me ocurre para cada carton. necesito hablar con el deño de este sitio web.

  4. Francisco 3 años ago
    Contestar

    No funciona el archivo o le esta faltando algo?

    • Pablo Baenas 3 años ago
      Contestar

      Hmm.. En principio el contenido del archivo es el mismo que puedes encontrar en el enlace que hay en la publicación. ¿Qué error te da?

  5. JULIO HERNANDEZ 3 años ago
    Contestar

    ME GUSTARIA QUE ME CONTACTARA PARA VER SI PODEMOS HACER LA APP COMPLETA Y CUANTO ME COSTARIA +5804166959914

Escribir comentario

Tu email no será publicado.

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Otras noticias de interés