Ayer estaba revisando algunos de los programas de código abierto y libre, que permiten usar una base de partidas de ajedrez, y que sirven para estudiar las aperturas, el medio juego, los finales, a ciertos jugadores en particular, etcétera. Hay varios manejadores de partidas gratuitos y desde luego, otros comerciales, pero el que me pareció más interesante, de la primera categoría, es "José", presumiblemente llamado así en honor de José Raúl Capablanca, campeón del mundo de ajedrez (de 1921 a 1927, en donde perdiese el título ante Alexander Alekhine, en la ciudad de Buenos Aires, Argentina, en uno de los encuentros más emocionantes de todos los tiempos).
José, como Scid y otros programas de esta naturaleza, más o menos tienen las mismas características. Unos hacen alguna cosilla que otro programa no hace y viceversa. Vale la pena si alguien quiere estudiar ajedrez de esta manera moderna y sin tener que gastar miles de pesos en comprar programas comerciales. Sin embargo, cuando vi la interfaz de "José", me pareció muy bien hecha y noté algo curioso: las piezas del tablero estaban hechas con los tipos de letra truetype. Pensé que esto era una buena idea, porque si quiere alguien escribir un programa que despliegue un tablero de ajedrez, ya no tiene que dibujar las piezas, sino que las toma de algún tipo de letra de esta naturaleza (de los cuales hay muchos gratuitos y de paga incluso).
Obsérvese
el tipo de letra, el que están viendo en la imagen de "José" es "Chess
Merida", de Armando H. Marroquín, un diseñador de fonts mexicano que ha
escrito muchos tipos de letra diferentes para enriquecer la tipografía
de ajedrez y que los ha puesto en forma gratuita en este sitio.
Aparentemente
el programador de José, Peter Schaefer, toma los tipos de letra y los
usa como si fuesen imágenes de las piezas de ajedrez. El programa puede
usar otros tipos de letra, por lo que claramente no sacó una imagen de
cada una de las piezas para así usarlas en sus tableros gráficos. Idea
sumamente interesante. ¿Cómo es que lo hace?
Pero oh sorpresa, el resultado que hallé fue el lo mismo que hace Gijsbert Wiesenekker en su programa de ajedrez "ZZZZZZ" escrito en Delphi.
Nótese
que cada pieza (que es un caracter del tipo de letra Chess Mérida),
hace transparente en toda la letra, no solamente en el entorno como en
José.
Pensé
entonces que Schaefer debe estar usando sprites, que son un tipo de
mapa de bits dibujados en la pantalla de la computadora, particularmente
para el modo gráfico, por ejemplo el cursor del ratón. Esto es posible
ya que se puede hacer una operación lógica OR o AND entre la imagen
original y otra, y dejar el resultado en otra posición de memoria. De
esta manera es sencillo cambiar colores o eliminar el fondo mediante una
"máscara". Da la impresión que José lo hace de esta forma, pero noté
que también puede reducir la imagen del tablero y en consecuencia las
piezas también se hacen más chicas.
El reto es ahora hacer un programa que pinte un tablero de ajedrez, con las piezas como José las define (usando los tipos de letra TTF). El autor debe explicarme qué técnica siguió y haciendo un programa que ejemplifique esto, pudiendo el usuario (yo en este caso), cambiar el tipo de letra (como pasa en José). El programa no tiene que estar en Delphi, aunque sería deseable.
La pregunta es pues, ¿cómo hace José este tipo de imágenes de las piezas?
¿El premio de este reto? Una taza con el logotipo de la Morsa a la mejor solución. Esto solamente aplica a los programadores que vivan en el DF (mandar a provincia o a otros países una taza es estúpidamente costoso). En caso de que los concursantes sean de otros países o de la provincia mexicana, el premio será una memoria USB de al menos 8 GBytes y se les enviará por correo certificado. Y sí, sé que no son los grandes premios pero esto es lo que hay por el momento. Evidentemente quien gane será anunciado aquí y hasta tendrá sus quince minutos de fama. La decisión es inapelable.
Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto. Programas copiados de la web o que tengan ese sabor sospechoso de plagio podrán ser eliminados sin mayores consideraciones. El chiste de estos retos es que los programadores se animen a resolverlos, no que busquen la manera de hacer trampa. ¡Así que a afilar sus habilidades de programación!
Referencias:
José Chess database
ZZZZZZ
No comments:
Post a Comment