Bitacora #2: Tile.js generator

Dejando los posts sobre cosas curiosas de javascript para más adelante, cuento un poco sobre una pequeña utilidad que arme para usar en el port del gorillas.

Se trata de un simple generador de tiles para usar sobre un contexto 2d.
Dado que el juego original no utilizaba imágenes, me pareció que no seria correcto hacer un clon que sí las use, por lo que pensé en dibujar los elementos del juego (gorilas, edificios, bananas y el sol) con primitivas del contexto 2d.

Como seria bastante engorroso imaginarme donde tendría que poner cada punto, se me ocurrió hacer una ‘pizarra’ en la que se dibuje cada punto que selecciono. Estos se van guardando en memoria para luego obtener una función con el código para dibujar dichos puntos.

Para manejar de forma ‘elegante’ la orientación a objetos en javascript, use la libreria Base.js. Esta provee de una serie de objetos y métodos que hacen que la herencia y la creación de ‘clases’ sea más llevadero.
El resto del código, consiste en una clase con un ‘canvas virtual’ que lleva registro de los puntos que fueron dibujados para luego obtener el código de cada uno (tanto la clase ‘canvas’ como la clase ‘dot’ saben como obtener su código).
Ademas, al momento de obtener las funciones, se puede especificar un ‘multiplicador’ para reducir el tamaño de los puntos, de esta forma se puede dibujar en grande y de forma comoda, para luego disminuir el tamaño.

Ejemplo:

Tile Generator

Dibujamos esto...

 

 

Drawed gorilla

y obtenemos la función para dibujar esto...

El script es bastante sencillo y carece de buenas prácticas, pero es útil para lo que necesito en este momento.

Para verlo en acción: http://tehsis.me/tilegen/
Repo en github: https://github.com/tehsis/Tile.js-Generator

En el futuro espero hacerlo extensible a primitivas distinta a los puntos (rectángulos en realidad) y poder dibujar otras cosas. No seria complicado, pero ahora la prioridad es el gorillas :D.

Dejo un par de links interesantes,

Base.js – Mini librería para trabajar con objetos, clases, herencia, etc de forma ‘clasica’
Load.js – Mini librería para ‘importar’ scripts js mediante código.
10 Things I learned from jQuery source – Video de Paul Irish contando 10 técnicas interesantes que estan presentes en el código de jQuery.
Tutorial del elemento Canvas (MDC) – Lindo y llevadero tutorial del MDC sobre la etiqueta canvas y el contexto 2d.