Ir al contenido principal

El juego de la vida de John Horton Conway en Python 3.4 y Java

El juego de la vida en Python 3.4 y Java Swing

Hace cosa de un año más o menos había programado "El juego de la vida" en Java por curiosidad. 

Un buen amigo un día que pasó por casa vió que había hecho ese juego , él me dijo: "Si quieres hacer un buen ejercicio para cuando tengas que empezar con un lenguaje de programación nuevo y quieras conocer su sintaxis rápido , programa el juego de la vida"

Pues esta vez me ha tocado empezar con Python y para seguir su consejo hice el juego y la verdad es que me ha valido porque he tocado lo básico de Python, condicionales, bucles, arrays, funciones ... casi todo lo básico.

A diferencia con el de Java, es que en Python lo hice en modo texto , usando la terminal ya que para poder usar ventanas tengo que usar WxPython y muy a mi pesar ahora mismo el tiempo apremia y no quería extenderme más con la librería de ventanas ya que por el momento la necesidad de usar ventanas con Python no me hace falta. Pero eso sí , queda pendiente :).

Al grano.

Si no has oido hablar sobre el juego de la vida te explicaré que es y de que va pero aquí tienes la explicación completa para más detalles. El juego lo hizo John Horton Conway, un matemático Inglés nacido en Liverpool en 1937.

El juego de la vida en realidad no es un juego , porque es de cero jugadores , es un autómata celular , un modelo matemático que cambia con el tiempo siguiendo unas determinadas condiciones e interactúa consigo mismo.







¿En qué se basa el juego?

El juego se basa en una malla virtual ( tablero ) infinita y cada casilla ( célula ) puede tomar un valor , viva o muerta y debe obeceder las siguientes condiciones:

Esta célula para la siguiente iteración seguirá estando viva
Condiciones:

- Si una célula a su alrededor tiene menos de 2 células  y esa célula está viva , esa célula para la siguiente iteración estará muerta , morirá de hambre.

- Si una célula a su alredor tiene más de 3 células y esa célula está viva , esa célula para la siguiente iteración también morirá , demasiadas células para sobrevivir.

- Si una célula a su alrededor tiene justamente 3 células y actualmente está muerta, para la siguiente iteración pasará a estar viva.

-Si una célula a su alrededor tiene justamente 3 células y actualmente está viva para la siguiente iteración seguirá estando viva

- Y finalmente , si la célula a su alrededor tiene 2 células para la siguiente iteración se queda con el estado que esta tenga , que puede ser viva o muerta.


La mágia.

La mágia del juego es que se "crea" vida, podemos ver unos "seres vivos" que pueden tomar las siguientes formas con el paso de iteraciones. Dependiendo de como queda el tablero de células aleatorias cuando empieza el juego pueden salir distintas formas, no tienen porque salir todas.



En la versión de Java lo puedes ver mejor, ya que es una ventana y no es en modo texto como con Python.




Este juego fue muy famoso en la década de los 80 y en realidad no es muy difícil de programar pero tiene lo suyo también , es un pequeño reto por si quieres animarte a programarlo.


Pues nada más , espero que te haya gustado la entrada y hayas aprendido algo si desconocias el "Juego de la vida de John Horton Conway". Interesante , ¿verdad?.

Gracias !













Entradas populares de este blog

LPIC-1 101 y 102

Certificación LPIC-1 101-102. Linux Certification Institute. Esta entrada es especial para mi porque he aprobado el certificado LPIC-1 de Linux. Al buscar información sobre las certificaciones , pues encontré información confusa y sé de algunas personas que quieren prepararse el exámen para un futuro , y si las bases de los exámenes no cambian quería aclararle las dudas. Quien no sepa lo que es LPIC-1 , es una certificación del Linux Professional Institute  la cual avala que tienes los conocimientos mínimos para gestionar un sistema operativo Linux independientemente de su distribución, como siempre te pongo la información más extendida   aquí .  El LPIC-1 es el primer exámen de todos y te digo desde ya que tiene su dificultad. Esto lo digo porque yo mismo al llevar un par de años con Linux , creía que mis conocimientos en Linux eran suficientes y solo había visto la punta del iceberg. Y en el primer nivel tocas muchas cosas. Lo que te quiero decir con esto es que e

Juego de la Serpiente con Java Swing

En esta entrada les voy a mostrar como hice el juego de la serpiente. Cuando tenía 15 años lo intente hacer y en ese momento lo ví como algo extremadamente complejo.  En su momento no vi mucha información de como hacer el juego ( o no supe encontrar ) , y por si alguien está en esta situación , aquí va mi aportación para intentar aclarar sus dudas.    He visto muchos códigos que lo han hecho mucho mejor, dibujando en el Frame y mucho más trabajado, pero yo personalmente soy partidiario de que siempre es mejor ver las cosas desde su nivel más simple, y una vez entendida la idea, ya luego pasarla a otra cosa, darle mejor aspecto y adornos son valores añadidos. Para el que no sepa como funciona el juego de la serpiente ( cosa que dudo , todos tuvimos un Nokia ) , es una serpientita a la que le van apareciendo frutas , ella va comiendo y se va haciendo grande, hasta que llega un momento que se hace muy difícil controlarla porque es demasiado grande y chocamos con nosotros mismos.

Añadiendo autocompletado a un JTextField de Java Swing

Esta vez para un trabajo de clase en  Java Swing  me vi con la necesidad de tener un JTextField con autocompletado ( como la caja de texto de Google cuando buscas algo ) y como no viene por defecto el JTextField con esta característica , pues tuve que hacerme uno. Pero en este caso no me hacía falta consultar una base de datos para rellenarlo según vas escribiendo en él, sino que a este ya le doy los datos a filtrar de antemano. Tú dirás ... pero si hay miles en internet ya hechos , por qué reinventar la rueda ...,  Ya , ya lo sé , pero en algunos de los que ví , no me gustaba la manera de como se implementaban en el código para poder usarlo , otros no me gustaban como se veían visualmente , y lo más importante ... yo no me podía quedar con la duda de como se hacía uno ( esta última era la que más me podía jeje , yo y mi curiosidad ). ¿Cómo lo uso ? Te explico como funciona el componente GTextField , tan simple como instanciarlo y en su constructor pasarle t