Nota del autor

Si la entrada que estás leyendo carece de imágenes, no se ve el vídeo que teóricamente lleva incrustado o el código fuente mostrado aparece sin formato, podéis conocer los motivos aquí. Poco a poco iré restableciendo la normalidad en el blog.
Este blog es un archivo de los artículos situados previamente en Lobosoft.es y ha dejado de ser actualizado. Las nuevas entradas pueden encontrarse en www.lobosoft.es. Un saludo,
Lobosoft.

martes, 18 de marzo de 2008

El juego de la vida de Conway

Preparando material para una introducción a Test-Driven Development , y aficionado como soy desde siempre al aspecto más lúdico del software, pensé en realizar una versión del Juego de la vida basando el desarrollo en la especificación de las reglas de juego mediante las pruebas unitarias. En el Juego de la vida, concebido por el matemático británico J. H. Conway, el jugador se convierte en mero espectador de la evolución que se desarrolla ante sus ojos. Las reglas son muy simples y el resultado apasionante, de ahí mi interés en convertirlo en un ejemplo para el curso. El tablero de juego es una malla de celdas en las que puede haber o no células. Básicamente, el juego se sustenta en lo siguiente:




  • Una célula muerta con exactamente 3 células vecinas vivas "nace" (al turno siguiente estará viva).

  • Una célula viva con 2 ó 3 células vecinas vivas sigue viva, en otro caso muere o permanece muerta (por "soledad" o "superpoblación").


En las referencias, a pie de artículo, se pueden encontrar enlaces a la Wikipedia y otros sitios de internet con más información sobre el juego.


Juego de la vida de Conway


Mi sorpresa fue mayúscula cuando, al buscar referencias a otras implementaciones del juego (como versiones en 3D, o con tableros de características distintas al del juego original), encontré con la versión que recomiendo ahora. Una implementación muy reciente del juego, en .Net 3.5, usando la potencia de LINQ para el manejo de colecciones, y con el código de pruebas unitarias implementado. Y si ya existe la rueda, ¿para qué reinventarla? Tras estudiarlo brevemente, creo que lo usaré para mi curso y, de paso, os lo recomiendo desde el blog, pues siempre me pareció un tema apasionante, tanto desde el punto de vista de la informática como base para la simulación de ecosistemas y evolución de poblaciones.


Ya que también existe una versión en F# y Silverlight (otra de las posibilidades que me planteaba, contando con el conocimiento que respecto a esta última tecnología posee mi amigo Fernando), se me ocurre ahora una versión del juego en 3D, con toda la potencia que ofrece XNA... y es que a este último le tengo, de momento, algo abandonado. A ver si los compañeros de Malvicio se apuntan a esta aventura de la vida.


Para saber más:

1 comentario:

  1. [...] de programas, a su vez, permiten simular vida artificial. Imaginemos un híbrido entre ellos y el juego de la vida de Conway, por ejemplo. Podríamos programar varias especies, con comportamientos y cualidades diferentes, [...]

    ResponderEliminar