Si me da la gana me flipo con el ajedrez viendo gambito de dama. Me refiero a que estoy en mi derecho de fliparme con una serie y era necesario expresarlo.
Una vez dicho vamos con la mandanga del asunto.
Un tablero de ajedrez consta de 64 casillas de las que 32 son de un color y el resto de otro. En esta entrada voy a colocar lo necesario para poder crear scripts en bash que nos permitan dibujar partidas de ajedrez (todos los movimientos) y por tanto poder hacer un gif, poder sacar un png de cada movimiento, …
Solamente necesitaremos imagemagick. En Debian puede instalarse así:
# apt-get install imagemagick
Imagemagick es una suite de herramientas que nos permitirán trabajar gráficos desde la consola. Es ideal para scripting y por tanto buena cosa para no trabajar demasiado de forma repetitiva.
De modo que solamente necesitamos 2 texturas.
El tamaño de cada casilla es de 100×100 px . ¿El motivo? Simplemente me ha dado la gana y me parece más sencillo trabajar con estas medidas que con otras.
Aparte del tablero vamos a precisar de las piezas. Básicamente son estas que se pueden ver en la siguiente captura:
Nos podemos bajar todos los gráficos desde aquí: imgs-chess-tar.gz
Ahora al tema. vamos a posicionar todas las piezas en lo que viene siendo una partida normal al inicio. Para ello se usa composite (de la suite imagemagick).
Dejo aquí las instrucciones:
# Colocamos peones negros
composite peon-negras.png tablero.png -compose ATop -geometry +0+100 final.png
composite peon-negras.png final.png -compose ATop -geometry +100+100 final.png
composite peon-negras.png final.png -compose ATop -geometry +200+100 final.png
composite peon-negras.png final.png -compose ATop -geometry +300+100 final.png
composite peon-negras.png final.png -compose ATop -geometry +400+100 final.png
composite peon-negras.png final.png -compose ATop -geometry +500+100 final.png
composite peon-negras.png final.png -compose ATop -geometry +600+100 final.png
composite peon-negras.png final.png -compose ATop -geometry +700+100 final.png
sleep 1
# Colocamos peones blancos
composite peon-blancas.png final.png -compose ATop -geometry +0+600 final.png
composite peon-blancas.png final.png -compose ATop -geometry +100+600 final.png
composite peon-blancas.png final.png -compose ATop -geometry +200+600 final.png
composite peon-blancas.png final.png -compose ATop -geometry +300+600 final.png
composite peon-blancas.png final.png -compose ATop -geometry +400+600 final.png
composite peon-blancas.png final.png -compose ATop -geometry +500+600 final.png
composite peon-blancas.png final.png -compose ATop -geometry +600+600 final.png
composite peon-blancas.png final.png -compose ATop -geometry +700+600 final.png
sleep 1
# Colocamos torres negras
composite torre-negras.png final.png -compose ATop -geometry +0+0 final.png
composite torre-negras.png final.png -compose ATop -geometry +700+0 final.png
sleep 1
# Colocamos torres blancas
composite torre-blancas.png final.png -compose ATop -geometry +0+700 final.png
composite torre-blancas.png final.png -compose ATop -geometry +700+700 final.png
sleep 1
# Colocamos caballos negros
composite caballo-negras.png final.png -compose ATop -geometry +100+0 final.png
composite caballo-negras.png final.png -compose ATop -geometry +600+0 final.png
sleep 1
# Colocamos caballos blancos
composite caballo-blancas.png final.png -compose ATop -geometry +100+700 final.png
composite caballo-blancas.png final.png -compose ATop -geometry +600+700 final.png
sleep 1
# Colocamos alfiles negros
composite alfil-negras.png final.png -compose ATop -geometry +200+0 final.png
composite alfil-negras.png final.png -compose ATop -geometry +500+0 final.png
sleep 1
# Colocamos alfiles blancos
composite alfil-blancas.png final.png -compose ATop -geometry +200+700 final.png
composite alfil-blancas.png final.png -compose ATop -geometry +500+700 final.png
sleep 1
# Colocamos reina negra
composite reina-negra.png final.png -compose ATop -geometry +300+0 final.png
sleep 1
# Colocamos reina blanca
composite reina-blanca.png final.png -compose ATop -geometry +300+700 final.png
sleep 1
# Colocamos rey negro
composite rey-negro.png final.png -compose ATop -geometry +400+0 final.png
sleep 1
# Colocamos rey blanco
composite rey-blanco.png final.png -compose ATop -geometry +400+700 final.png
El sleep se lo podéis quitar. Eso generará un archivo llamado final.png en el que se ve esto:
Si quisiéramos mover un peón de por ejemplo a2 hasta a4. Tendríamos que colocar el peón en a4 (+0+400) y el color de la casilla superponerlo, es decir, usar la textura que tiene de tamaño 100×100. De ese modo estaría moviéndose.
Como puede verse la cosa no tiene mucho misterio. No obstante es maravilloso poder hacer estas cosas con imagemagick y un simple script en bash.
Saludos cordiales.