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.

6 Comentarios
  1. Cheli Cheli 9 años ago
    Contestar

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

    • AraDaen 9 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 8 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 6 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 6 meses 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

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