AraDaen, sysadmin notes Blog sobre administración de sistemas operativos, análisis de nuevas tecnologías, diseño y desarrollo de software a medida (Java, .NET, Android) y otras noticias

Programando un bingo con PHP en 5 minutos

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

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

5 comments

  1. Cheli Cheli says:

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

    • AraDaen says:

      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 says:

        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 says:

    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

Leave a Reply

Your email address will not be published. Required fields are marked *