Índice de contenidos

 

INTRODUCCIÓN

UN POCO DE HISTORIA

USO DE LOS NÚMEROS ALEATORIOS EN VIDEOJUEGOS

UN EJEMPLO REAL. USO DE LOS NÚMEROS ALEATORIOS EN SCRATCH

 

Introducción

Siempre me ha fascinado la idea del azar, de la aleatoriedad. Estamos rodeados de situaciones que ocurren sin ninguna razón ni patrón, situaciones imprevisibles e incontrolables. Jugamos al parchís y lanzamos el dado buscando un número que rara vez sale, quién no ha pensado alguna vez: “si todos los números tienen la misma probabilidad, ¿por qué nunca sale el que yo quiero?”, en cambio a tu contrincante, le sale siempre el número que necesita, “qué suerte tiene, piensas”. La suerte y el azar, siempre de la mano. Fruto de esta aleatoriedad, del azar, surgen los números aleatorios, y como vamos a ver a lo largo de este de artículo, pueden ser muy útiles a la hora de programar un videojuego.

 

Un poco de historia

Ya en el antiguo Egipto, hace más de 2500 años, se practicaban juegos de azar utilizando objetos de hueso, lo que hoy serían dados. Los Egipcios  generaban números aleatorios con huesos para jugarse la comida, el cobijo y quién sabe que más cosas. Más tarde, en los siglos XVII y XVIII, matemáticos de renombre utilizaban fórmulas y teorías para crear situaciones aleatorias con las cuales poder desarrollar juegos de azar, como la ruleta del casino, o diferentes juegos con dados. Esto supuso el comienzo del estudio académico de la probabilidad pero no fue hasta principios del siglo XIX cuando Pierre Simon, Marqués de Laplace, formuló la primera teoría general de la probabilidad.

Todavía a principios del siglo XX, los números aleatorios se generaban con rudimentarios y costoso sistemas físicos como enormes discos giratorios iluminados al azar con lámparas relámpago. No fue hasta la mitad de este siglo, con la llegada de los ordenadores cuando se pudieron desarrollar metodologías para generar números aleatorios utilizando el poder de cálculo de los ordenadores. Tan importantes eran estos estudios, que al principio estuvieron restringidos al ámbito militar.

Aun así, a día de hoy, los verdaderos números aleatorios solo pueden ser generados a partir de fuentes aleatorias de naturaleza física, como dados, ruletas , monedas u otras más sofisticadas como el ruido eléctrico de un procesador. Los números generados a través de algoritmos matemáticos, aun teniendo un comportamiento similar, están siempre sujetos a un patrón definido, y se les conoce como números pseudo-aleatorios.

Uso de los números aleatorios en los videojuegos

Pero… ¿por qué usar números aleatorios al programar un videojuego? La respuesta es muy sencilla, los hace mucho más divertidos. Imaginemos que programamos un juego como el famoso Snake de los teléfonos Nokia de finales de los años 90.

 

Nokia Snake 970 80

Figura 1. Pantallazo del juego “Snake” que popularizó Nokia a finales de los 90.

En el juego, una (al inicio…) pequeña serpiente avanza por la pantalla en busca de alimento. Mientras tanto, van apareciendo objetos en lugares de la pantalla que harán crecer a la serpiente cada vez que los atrape. Gana el juego aquél que consiga hacer una serpiente más larga (atrape más objetos comestibles) sin chocar con las paredes o consigo misma. Imaginemos por un momento que los objetos comestibles aparecen durante el juego siguiendo siempre el mismo patrón. Siempre aparecen en los mismos sitios y en el mismo orden. Después de jugar unas pocas veces, cualquier usuario sabría dónde van a aparecer siempre los objetos. Adiós factor sorpresa, adiós entretenimiento… ¿Y si los objetos aparecen cada partida en lugares distintos sin seguir ningún patrón establecido? Cada partida, por muchas que juguemos, será siempre diferente. Y esa es la clave, usar el azar en un videojuego hace que cada partida sea única e irrepetible.

 

Un ejemplo real. Uso de los números aleatorios en Scratch

Como hemos dicho en el apartado anterior, usar números aleatorios al programar un videojuego hace que cada partida sea única, y sí, esto también aplica a los juegos programados en Scratch. Para demostrarlo, vamos a analizar un videojuego programado por dos de nuestros alumnos este año, y que ellos mismos titularon “Waka-Waka” (gracias Javi y Andrés  ;) )

 

portada juego WakaWaka 

Figura 2 – Juego “Waka-Waka” programado en Scratch por Andrés y Javi, dos alumnos.

El juego consiste en golpear al ratón con el martillo, pero hay que ser muy rápido, puesto que el ratón se asomará menos de un segundo antes de esconderse y rápidamente cambiar de agujero. Imaginémonos este juego sabiendo después de unas pocas partidas por donde va a salir nuestro ratón. Sería cualquier cosa menos divertido. Sólo habría que memorizar la secuencia ordenada de agujeros por los que va a salir el ratón, y esperarlo plácidamente martillo en mano… Buffff !!!

Pero… ¿y si no podemos predecir por que agujero se va a asomar nuestro ratón? ¿Y si cada partida la empieza en un agujero diferente? Tendremos que estar muy atentos y observar la pantalla sin parpadear hasta que aparezcan sus orejillas por uno de los agujeros para cazarlo rápidamente con nuestro martillo. Hará falta ser muy rápido para cazarlo, y eso será siempre así, por más partidas que juguemos.

Y ahora bien, ¿cómo programaron Andrés y Javi este divertido juego? Vamos a explicároslo con su permiso… ;)

En primer lugar, recomendamos empezar a programar por el Sprite (personaje) más sencillo, en este caso, el martillo. El martillo se va a mover por la pantalla siguiendo al ratón y al hacer clic con el mismo, comprobará si ha cazado al ratón. Si lo ha cazado, sumara un punto y “avisará” al ratón de que así ha sido con un mensaje. Si no lo ha cazado, volverá a su disfraz original y seguirá buscando. A continuación os mostramos el código empleado en Scratch para programar este comportamiento.

Código martillo

Figura 3. Código Scratch para programar al martillo.

Fácil, ¿no? Vayamos ahora con el código del ratón. En este caso, el Sprite tiene que salir por uno de los agujeros, esperar un poco, y correr despavorido hasta otro agujero para que el martillo no lo atrape. Pero…. ¿por que agujero sale?, ¿cuál de ellos será el siguiente? Aquí es donde entran en juego los números aleatorios y afortunadamente, Scratch incluye una instrucción específica para esto:

Instrucción numero aleatorio

Figura 4. Instrucción en Scratch para generar números aleatorios

Una vez sabemos esto, el código del programa está hecho. Solo hay que calcular las coordenadas de cada agujero y utilizar los números aleatorios para elegir una distinta cada vez.

Codigo raton posicion

Figura 5. Posicionamiento del ratón en pantalla

Ya sólo queda programar qué es lo que ocurre cuando el pobre ratón recibe un martillazo en toda la cabeza... auchhhh!!!!!!

Código raton golpeo

Figura 6. Comportamiento del ratón al ser golpeado.

¿A que no es tan difícil como os habíais imaginado?

Podréis jugar a este juego y a muchos otros en el particular museo de juegos de nuestros alumnos. ¡No os lo perdáis!!

http://bit.ly/appMuseo

Hasta la próxima…

 

Comments   

0 #1 Pedro 2016-06-07 13:17
Muy buen post !
Gracias por compartirlo
Quote

Add comment

Security code
Refresh

JSN Boot template designed by JoomlaShine.com