Gestor de base de datos de partidas de ajedrez I
En esta serie de artículos voy a comentar un gestor de bases de datos de partidas de ajedrez, ChesPosDb, que podéis descargar con este enlace. No se trata de un programa que juegue al ajedrez, solo almacena partidas, pero permite realizar consultas con gran cantidad de opciones, buscar partidas en las que se den una serie de jugadas, ya sea una a continuación de otra o bien a varios movimientos de distancia, e incluso buscar posiciones definidas de manera parcial, pudiéndose encontrar las piezas en cualquier parte del tablero.
Además de instalar el programa, simplemente descomprimiendo los archivos en un directorio cualquiera, es necesario instalar un gestor de base de datos. La aplicación puede utilizar Oracle, SQL Server y MySQL, que se pueden obtener de manera gratuita siempre que no se destinen a usos comerciales. Existen multitud de tutoriales en internet y en YouTube para hacerlo, pero aquí os dejo un enlace para Oracle, otro para SQL Server y otro para MySQL.
Más adelante explicaré cómo crear la base de datos en cada uno de estos RDBMS y cómo configurar el programa para que se conecte a ella y pueda ser utilizado. De momento os recomiendo no instalar ninguna hasta que haya explicado los requisitos a seleccionar en la instalación para que el programa funcione. En primeros artículos haré un repaso general de todas las funcionalidades, para que puedas comprobar si el esfuerzo te merece la pena.
Carga de las partidas
Aunque las partidas pueden introducirse de forma manual, movimiento a movimiento, es preferible hacerlo utilizando ficheros que ya contengan partidas escritas previamente y que podemos encontrar y descargar en multitud de sitios de internet dedicados al mundo del ajedrez. El formato aceptado por el programa es uno muy popular, el formato PGN, que consiste en ficheros de texto que pueden contener multitud de partidas anotadas y comentadas. Las partidas son comprobadas antes de cargarlas en la base de datos, por lo que pueden aparecer errores debido a que alguna de ellas no sigue correctamente el estándar, yo me he encontrado con algunos, por lo que en ocasiones será necesario corregir el archivo para poder integrarlo, o bien descartar la partida incorrecta simplemente borrándola del fichero de texto. El programa proporcionará un texto con el error para que sea fácilmente encontrado con la opción de buscar del bloc de notas, lo puedes encontrar en el fichero pgnlog.txt que se genera en el mismo directorio donde está el ejecutable.
La aplicación también comprueba que todos los movimientos sean válidos, lo que puede resultar de ayuda si la partida la hemos tecleado a mano en un fichero de texto con este formato para integrarla en la base de datos.
Al abrir la aplicación, aparece la ventana principal con los menús:
En el menú Archivo existen dos opciones para importar estos ficheros: Importar archivo… e Importar múltiples archivos… que permite seleccionar más de un archivo de partidas para integrar en bloque.
Se abrirá el cuadro de diálogo estándar de Windows para abrir ficheros. Para seleccionar el fichero, es necesario asegurarse que tenemos seleccionado el formato de archivo correcto:
A continuación, si no se han producido errores, se abrirá la ventana de importación de partidas:
La ventana tiene tres partes: un listado con las partidas contenidas en el archivo, un tablero para poder visualizar la partida seleccionada y un panel donde se mostrarán los movimientos de la partida para poder moverse con facilidad entre las posiciones. Esta opción es útil si queremos seleccionar solo algunas de las partidas.
Listado de partidas
El listado de partidas muestra algunos de los campos que se utilizan como anotaciones estándar en todas las partidas en formato PGN, además de una marca que indica si hemos seleccionado o no la partida para su importación a la base de datos:
Las partidas pueden ser solo parciales y contener algunas jugadas claves del final, este formato no obliga a introducir partidas completas, por lo que la cantidad de movimientos y jugadas no se refiere a las totales de la partida, sino a las contenidas en el fichero.
Para marcar la casilla de selección de las partidas que queremos importar, primero hay que seleccionarlas con el ratón en el listado, pulsando sobre cada una de las líneas. Manteniendo pulsada la tecla de mayúsculas podemos seleccionar más de una. Sobre el listado existen tres botones, el segundo, tercero y cuarto por la izquierda, que sirven para marcar esta casilla. El primero marca las líneas seleccionadas con el ratón, el segundo selecciona todas las partidas sin necesidad de seleccionarlas primero, y el tercero quita la marca a las líneas seleccionadas.
Visualizar una partida
Para visualizar una partida, hay que seleccionarla primero pulsando con el ratón en la fila correspondiente del listado y, a continuación, pulsar el primer botón de la izquierda sobre el listado con el icono de un tablero de ajedrez. Los movimientos aparecen en el panel que está debajo del listado:
Los movimientos en rojo indican que se ha producido un jaque, en verde los movimientos en los que no se captura ninguna pieza, y en gris los movimientos con captura. Con los botones que hay sobre este panel se puede elegir visualizar las jugadas en columnas de arriba abajo y de izquierda a derecha (como en la imagen) o bien en filas de izquierda a derecha y de arriba abajo. Pulsando sobre cualquiera de estos movimientos se reproducirá la posición en el tablero del panel de la derecha:
En la barra de botones que está sobre el tablero se encuentran, de izquierda a derecha, los siguientes elementos:
- Reiniciar: vuelve a la posición inicial de la partida.
- Atrás: retrocede al anterior movimiento.
- Siguiente: avanza al siguiente movimiento.
- Texto de la jugada: texto indicativo de la jugada, con el mismo código de colores que el panel de movimientos.
- Rotar vista: da la vuelta al tablero en sentido vertical.
- Marcar escaques del movimiento: activa o desactiva el marcado de los escaques de inicio y final del movimiento. El escaque inicial se marca con un borde de color verde, mientras que el escaque final se colorea en función del resultado del movimiento: verde para solo movimiento, amarillo para captura de pieza y rojo para jaque.
En la parte inferior del tablero hay un cuadro de texto en el que aparecen los comentarios a la jugada si los hubiera. Las filas de letras inferior y superior se colorean en color blanco o negro en función del jugador que tenga el turno de movimiento.
Integrar las partidas en la base de datos
Una vez marcadas las partidas a integrar en la base de datos, con el quinto botón de la barra de botones que se encuentra sobre el listado de partidas podemos dar comienzo al proceso de integración en la base de datos. Al lado de este botón existe una barra que se va llenando a medida que el proceso va avanzando, para indicar el progreso, que puede ser largo para ficheros muy grandes (algunos pueden contener más de 1000 partidas). Antes de comenzar se nos preguntará si queremos integrar las partidas duplicadas, es decir, las que ya estén en la base de datos. Dos partidas se consideran iguales si su posición inicial es la misma y todos sus movimientos son iguales, independientemente de los comentarios y anotaciones que puedan contener, incluyendo el nombre de los jugadores. Con esta opción podemos evitar insertar dos veces la misma partida, aunque procesemos varios ficheros del mismo jugador.
Al terminar el proceso, se mostrará un mensaje indicando cuantas partidas se han integrado y cuantas estaban duplicadas. Las partidas duplicadas permanecerán marcadas en el listado, mientras que las integradas perderán la marca, para que sea sencillo identificarlas y analizar si se quieren integrar de todos modos en otro intento posterior.
Finalmente, se nos dará la opción de eliminar los archivos procesados del disco. Esto puede ser útil cuando estamos integrando una gran cantidad de ficheros en pequeños lotes o de uno en uno, para ir limpiando el directorio de manera segura. Conviene usar un directorio solo para integrar los archivos, mientras que mantenemos una copia de los mismos en otro directorio distinto para poder recuperar los que borremos de manera accidental.
Para no hacer muy largos los posts, continuaré en el próximo artículo de la serie explicando cómo se pueden construir filtros para buscar partidas en la base de datos.
¡Gracias por leer y hasta la próxima!