FORMAT DE LA BASE WTHOR Sylvain Quin et Stéphane Nicolet, aout 2001. 1) GENERALITES La base de WTHOR est d'origine PC/Intel. Aussi, les données de type Word et Longint sont-elles stockées au format Intel, c'est à dire l¹octet de poids faible devant. 2) EN-TETE Tous les fichiers de la base de données de WTHOR possèdent un en-tête de 16 octets, suivi d'un certain nombre d'enregistrements ayant tous une taille identique. L'en-tête est constitué comme suit : Libellé Taille Type Siècle de création du fichier 1 Byte Année de création du fichier 1 Byte Mois de création du fichier 1 Byte Jour de création du fichier 1 Byte Nombre d'enregistrements N1 4 Longint Nombre d'enregistrements N2 2 Word Année des parties 2 Word Paramètre P1 : taille plateau de jeu 1 Byte Paramètre P2 : type de parties 1 Byte Paramètre P3 : profondeur 1 Byte X 1 (réservé) - Les 4 premiers octets représentent une signature permettant d'éviter l'écrasement d'un fichier par une version plus ancienne. Pour cela, les programmes doivent permettre une mise à jour du répertoire (ou dossier) autrement que par une copie système. - Le nombre d'enregistrements N1 contient le nombre de parties (fichier de parties) ou de positions (fichier de solitaires) dans le fichier. Il vaut 0 pour les fichiers de joueurs et de tournois. Le nombre d'enregis- trements N1 est limité à 2 147 483 648 parties par année pour les fichiers de parties, à 2 147 483 648 positions pour les fichiers de solitaires. - Le nombre d'enregistrements N2 contient le nombre de joueurs (fichier de noms de joueurs), de tournois (fichier de libellés de tournois) ou le nombre de cases vides des solitaires (fichier de solitaires) dans le fichier. Il vaut 0 pour les fichiers de parties. Le nombre d'enregis- trements N2 est limité à 65535 pour les libellés des tournois et les noms des joueurs, à 64 pour les fichiers de solitaires. - L'année des parties vaut 0 dans les fichiers de joueurs, de tournois ou de solitaires. - Le paramètre P1 (dans un fichier de parties ou de solitaires) indique la taille du plateau de jeu : 0 : plateau de jeu standard 8x8 8 : plateau de jeu standard 8x8 10 : plateau de jeu 10x10 Il vaut 0 dans tous les autres cas. - Le paramètre P2 vaut 1 dans les fichiers de solitaires, et 0 dans tous les autres cas. - Le paramètre P3 (dans un fichier de parties) indique la profondeur pour laquelle est calculé le score théorique (la valeur 0 est équivalente à la valeur 22 pour les fichiers postérieurs au 01/01/2001). 3) FICHIER DES LIBELLES DES TOURNOIS Nom du fichier : WTHOR.TRN Chaque enregistrement (26 octets) est un tableau de caractères terminé par un zéro binaire. La longueur utile est de 25 caractères. Taille du fichier en octets : 16 + N2*26. 4) FICHIER DES LIVBELLES DES JOUEURS Nom du fichier : WTHOR.JOU Chaque enregistrement (20 octets) est un tableau de caractères terminé par un zéro binaire. La longueur utile est de 19 caractères. Taille du fichier en octets : 16 + N2*20. 5) FICHIERS DES PARTIES SUR PLATEAU 8x8 Nom du fichier : WTH_####.WTB Chaque enregistrement (68 octets) contient: Libellé Taille Type Numéro du libellé de tournoi 2 Word Numéro du joueur Noir 2 Word Numéro du joueur Blanc 2 Word Nombre de pions noirs (score réel) 1 Byte Score théorique 1 Byte Liste des coups 60 Byte[] - Il existe un fichier de parties par année. Dans un fichier de parties, celles-ci sont stockées dans un ordre quelconque, mais normalement regroupées par tournoi. - Les #### du nom du fichier sont le numéro de l'année. - Le score théorique contient le score (en nombre de pions) du joueur Noir sur une finale parfaite. Cette finale est calculée sur la position dont le nombre de cases vides est égal au paramètre P3 (profondeur). Par exemple, pour une profondeur de 22, la finale parfaite commence au coup 39, c¹est-à- dire une fois le coup 38 joué. - La liste des coups commence au coup 1.f5. - Les coups sont stockés dans l'ordre chronologique de la partie selon le format suivant : numéroter les lignes et colonnes de 1 à 8 et effectuer l¹opération => colonne + (10* ligne). Ex : a1 = 11, h1 = 18, a8 = 81, h8 = 88. - Taille du fichier en octets : 16 + N1*68. 6) FICHIERS DES PARTIES SUR PLATEAU 10x10 Nom du fichier : WTH_####.WTD Chaque enregistrement (104 octets) contient : Libellé Taille Type Numéro du libellé de tournoi 2 Word Numéro du joueur Noir 2 Word Numéro du joueur Blanc 2 Word Nombre de pions noirs (score réel) 1 Byte Score théorique 1 Byte Liste des coups 96 Byte[] - Il existe un fichier de parties par année. Dans un fichier de parties, celles-ci sont stockées dans un ordre quelconque, mais normalement regroupées par tournoi. - Les #### du nom du fichier sont le numéro de l'année. - Le score théorique contient le score (en nombre de pions) du joueur Noir sur une finale parfaite. Cette finale est calculée sur la position dont le nombre de cases vides est égal au paramètre P3 (profondeur). Par exemple, pour une profondeur de 22, la finale parfaite commence au coup 75, c¹est-à- dire une fois le coup 74 joué. - La liste des coups commence au coup 1.g6. - Les coups sont stockés dans l'ordre chronologique de la partie selon le format suivant : numéroter les lignes et colonnes de 1 à 10 et effectuer l¹opération => colonne + (12 * ligne). Ex : a1 = 13, j1 = 22, a10 = 121, j10 = 130. - Taille du fichier en octets : 16 + N1*104. 7) FICHIERS DES SOLITAIRES SUR PLATEAU 8x8 Nom du fichier : SOLITAIRES_##.PZZ Les solitaires sont des positions de finales intéressantes extraites de la base de WTHOR dans lesquelles le joueur ayant le trait a, à chaque coup, un seul coup menant au gain ou à la nulle sur la suite parfaite. Tous les solitaires d'un même fichier ont le même nombre de cases vides, indiqué dans l'en-tête et le ## du nom du fichier. À la suite de l'en-tête principal standard de 16 octets de la base WTHOR, chaque fichier de solitaires 8x8 comprend un en-tête secondaire de 512 octets constitué comme suit : Libellé Taille Type Table de présence 512 Longint [] La table de présence est un tableau de 64 entiers longs dans laquelle toutes les entrées valent 0, sauf la N2e qui contient le nombre d'enregistrements N1 du fichier. Cette table de présence permet une vérification de cohérence des informations lues dans l'en-tête principal : N1 est le nombre de solitaires et N2 le nombre de cases vides des solitaires. Chaque enregistrement (36 octets) est constitué comme suit : Libellé Taille Type Année de la partie du solitaire 2 Word Numéro du libellé de tournoi 2 Word Numéro du joueur Noir 4 Longint Numéro du joueur Blanc 4 Longint Position 16 Byte [] Nombre de cases vides 1 Byte Trait 1 Byte Score de la solution 1 Signed Byte 1er coup de la solution 1 Byte Score réel de la partie 1 Byte Coup 25 de la partie 1 Byte X 2 (réservé) - La position est stockée ligne par ligne, avec 2 octets par ligne. L'octet 0 code les cases a1-d1, l'octet 1 les cases e1-h1, etc., jusqu' à l'octet 15 codant les cases e8-h8. Dans chaque octet, la couleur de chaque case est codée par la combinaison de bits suivante : case vide : 00 pion noir : 11 pion blanc : 10 - Le trait vaut 1 pour Noir, 2 pour Blanc. - Le score de la solution contient le score, en différence de pions avec son adversaire, du joueur ayant le trait dans la position du solitaire, sur une finale parfaite. - Le premier coup de la solution est stocké selon le format suivant : numéroter les lignes et colonnes de 1 à 8 et effectuer l¹opération => colonne + (10* ligne). - Le score réel de la partie contient le score réel (en nombre de pions) du joueur Noir dans la partie dont est extrait le solitaire. - Le coup 25 de la partie contient celui qui a eu lieu dans la partie dont le solitaire est tiré, si la partie apparaît dans la base WTHOR. Il est stocké selon le format suivant : numéroter les lignes et colonnes de 1 à 8 et effectuer l¹opération => colonne + (10* ligne). Il contient 0 si cette information n'est pas disponible. - Taille du fichier en octets : 16 + 512 + N1*36. Fin du fichier de format de la base WTHOR.