Tuesday, June 11, 2013

El protocolo PGN está en inglés


Hace una semana, aproximadamente, me embarqué en un programa cuyo objetivo era el generar partidas de ajedrez aleatorias. Esto es parte de un proyecto que intenta asociar algunas leyes de la termodinámica al tablero de ajedrez y bueno, me compreometí a escribir un programita que pudiese generar partidas completas de manera azarosa.

Trabajé con bastante rapidez en el tema, y ya tenía finalmente como resultado, un texto con las partidas en PGN (Portable Game Notation), que es una descripción clara y clásica, de cómo anotar una partida de ajedrez en formato algebraico. De hecho, en este formato, hay dos partes, un encabezado, que contiene los datos fundamentales de la partida en cuestión: nombre de los jugadores, torneos, fecha, ronda, quién ganó, etcétera, y después de ello, la partida en sí, por ejemplo:

[Event "Paris m2"]
[Site "Paris"]
[Date "1858.??.??"]
[Round "9"]
[White "Morphy, Paul"]
[Black "Anderssen, Adolf"]
[Result "1-0"]
[ECO "B32"]
[PlyCount "33"]
[EventDate "1858.12.20"]

1. e4 c5 2. Nf3 Nc6 3. d4 cxd4 4. Nxd4 e6 5. Nb5 d6 6. Bf4 e5 7. Be3 f5 8. N1c3 f4 9. Nd5 fxe3 10. Nbc7+ Kf7 11. Qf3+ Nf6 12. Bc4 Nd4 13. Nxf6+ d5 14. Bxd5+ Kg6 15. Qh5+ Kxf6 16. fxe3 Nxc2+ 17. Ke2 1-0


Aparentemente se pueden agregar más "tags" como [commentator "La_Morsa"], por ejemplo.

La cuestión es que a pesar de que mi programa generaba -según creía- los archivos PGN correctos, a la hora de quererlos leer conChessbase o Rybka, por ejemplo, algo le pasaba al formato. Desaparecióan los números de jugadas en ocasiones, o bien, después se repetían fragmentos del la partida.

Pasó un rato y muchas pruebas sobre el por qué de esta situación hasta que encontré que la dificultad es que la descripción PGN funciona en inglés. Así, yo ponía, -por ejemplo- 1. Ch3 y lo que en realidad tenía que poner erta 1. Nh3, es decir, el problema es que las partdas PGN se deben escribir usando las iniciales de las piezas en inglés (R,N,B,Q,K y P) para (T,C,A,D,R y P), respectivamente.

Siempre se aprende algo nuevo, pero este detalle me quitó dos días de trabajo porque no hallaba la fuente del error.



2 comments:

alidhaey said...

Una modificacion al formato, seria tener un tags del tipo [Language "es_ES"] para que la aplicación sepa si esta utilizando otro idioma para nombrar a las piezas, pero es algo que queda fuera del estandar.

Morsa said...

Pues sí. Yo quizás me confundí, porque en chessbase puedes poner las iniciales de las piezas y por ende, puedes definirls como quieras, pero no me había percatado que el programa busca, en los textos que esté en inglés y ya hace los cambios.

saludos