Elementos finitos aleatorios en un juego.

Figura 1 – Cartas en poker.

Cuando juegas con una baraja de naipes un juego como el poker sabes que recibirás un número de cartas específico, que este número de cartas no se repetirán con otras cartas en la baraja y además que entre partidas las cartas recibidas serán diferentes.

Esta distribución aleatoria permite que las combinaciones de juego crezcan exponencialmente conforme mas elementos agregas a la pila de cartas permitiendo que el jugador tenga un amplio abanico de posibles decisiones a tomar logrando que el juego no se vuelva monótono o aburrido.

Esta es una situación común al momento de diseñar videojuegos basados en eventos donde sabes por partida o juego cuantos elementos debes mostrar de forma aleatoria de un total, como sucede por ejemplo en un memorama.

Imaginemos una situación donde necesitamos mostrar un conjunto de cofres, donde algunos tendrán un castigo, otros tendrán recompensas y solo uno deberá tener el “gran premio”.

Una forma de resolverlo que parece atractiva es crear interfaces / arreglos de datos donde ya estén especificadas las posiciones de cada objeto. Sin embargo configurar todas las posibles combinaciones llegará a ser una tarea titánica dependiendo la cantidad de elementos a crear. Por ejemplo con 3 elementos podemos ver que hay un total de 6 posibles combinaciones pero ya para 4 elementos este número crecerá hasta las 24 combinaciones.

Figura 2 – Posibles permutaciones de 3 elementos

[su_note note_color=”#FEFBBC” text_color=”#000000″]**Nota: En matemáticas la cantidad de combinaciones para la variación de orden o disposición de elementos es conocida como permutaciones y se calcula obteniendo el factorial del número de elementos a utilizar (representado como n!). En los ejemplos del párrafo anterior el calculo fue 1x2x3=6 y 1x2x3x4=24.[/su_note]

Una forma muy eficiente de resolver este problema es mediante la eliminación aleatoria de datos.

Aunque para este ejemplo utilizaremos LUA el proceso funciona para cualquier lenguaje de programación. El proceso esta conformado por los siguientes pasos:

  • Tener un arreglo con todos los elementos que vamos a usar.
  • Realizar la extracción un total de veces igual al tamaño del arreglo.
    • Por cada vuelta extraer un elemento aleatorio del arreglo.
    • Una vez utilizado ese elemento lo eliminamos del arreglo para que no se repita en la siguiente vuelta.

Como ya se mencionó lo primero es organizar nuestro arreglo de datos como podemos observar en el siguiente ejemplo:

Una vez configurado este arreglo solo hace falta extraer cada elemento de manera aleatoria. Para ello la ejecutaremos la extracción de un valor aleatorio el total de veces que define el tamaño de ese arreglo, usar el valor y eliminarlo del mismo, tal como se muestra en el siguiente ejemplo:

Esta sencilla ténica nos permitirá crear permutaciones de elementos finitos. Una vez dominado el concepto juegos de cartas, escenas con disposición de sorpresas o cantidad de enemigos especificos ya podremos contruirlas.

A continuación podemos ver un ejemplo completo de como se puede aplicar esta técnica.

Figura 3 – Ejemplo de posibles combinaciones que se pueden obtener de un arreglo de 9 elementos.

Espero hayas disfrutado y aprendido muchas cosas de este artículo y por favor siéntete libre de compartir esta información en tus redes sociales para que otras personas interesadas también puedan conocer algo nuevo que les pueda ayudar en sus proyectos futuros. ¡Hasta la próxima!