Game Of Life en Ceylon
En el Code Retreat que hubo en Agosto de 2012, el reto fue implementar el famoso Game of Life, en parejas. En mi equipo, @juwe y yo lo desarrollamos en Ceylon (no me impuse; él se animó, jejej).
Apenas hoy lo pude subir a un repositorio que tenemos en GitHub especialmente para ejemplos de Ceylon, después de darle una buena actualizada al código porque han habido varios cambios en la sintaxis y en el módulo de lenguaje desde que escribimos esto originalmente: ya teníamos comprensiones, funciones de orden superior, funciones anónimas y varias otras cosas, pero no teníamos por ejemplo el assert
, tuplas, ni la sintaxis actual para secuencias y colecciones iterables; la sintaxis para funciones anónimas cambió ligeramente, al igual que la de parámetros variádicos (los famosos varargs).
La aplicación es bastante sencilla: tiene dos clases principales: Matrix
y Cell
. La matriz realmente maneja todas sus celdas en una secuencia (una lista no vacía) pero sabe que debe medir un determinado número de columnas y filas (es cuadrada), con lo cual puede determinar qué celdas están arriba y abajo de alguna en particular, no solamente las que tiene a su izquierda y derecha.
Incluye unas pruebas sencillas para verificar que la matriz se comporta como debe, y finalmente se puede ejecutar la aplicación para desplegarse en Swing. Pero en Mac OS X tiene un problema y no se puede ejecutar desde la línea de comando, debido a un problema con las clases de LookAndFeel de Swing para Mac; sin embargo si lo ejecutan desde el IDE no deben tener ningún problema.
El código lo pueden ver aquí: https://github.com/ceylon/ceylon-examples
- ezamudio's blog
- Inicie sesión o regístrese para enviar comentarios
Comentarios
Y ahora en JavaScript
Hice un refactoring de este ejemplo, para separar por completo la lógica de la interfaz gráfica, y así poder usar la lógica tanto en JVM usando Swing como estaba originalmente, y ahora además en JavaScript, en una página HTML.
Con esto se muestra además un poco de la interoperabilidad entre Ceylon y JavaScript.
Para poder ejecutar esto se necesitan las versiones más recientes del compilador y módulo de lenguaje, ya que utiliza algo nuevo en Ceylon: el bloque
dynamic
.UPDATE He hecho un gist con el código para poderlo correr en el web IDE de Ceylon: https://gist.github.com/chochos/5052213 pero mientras no actualicemos el web IDE oficial a la versión M5 (que será cuando saquemos esa versión), sólo se puede probar en el sitio beta: https://trybeta-ceylon.rhcloud.com/
compñartir
Puede compartir el archivo
GIST
Cuál archivo?
Si quieres el código fuente, hay una versión vieja en el link al gist que está en el comentario al que respondiste, y la versión actualizada se encuentra en try.ceylon-lang.org