Bonjour !
Je cherche à fabriquer un dictionnaire d'ouvertures pour un jeu d'échecs. Les données sont contenues dans un fichier texte que j'ai trouvé sur cette page :
http://www.rebel.nl/edsoft.htm
http://www.rebel.nl/download/eco.zip
Les données se présentent ainsi :
Soit une séquence de coups ("b2b4"), à laquelle sont associés un code ("A00") et une description ("Polish (Sokolsky) opening"), qu'il n'est peut-être pas utile de séparer.A00 Polish (Sokolsky) opening
1.b2b4
J'ai fabriqué une unité qui se présente ainsi :
J'aurais aimé savoir si vous connaissez d'autres façons d'obtenir le même résultat.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 unit eco; // http://www.chessinformant.org/ // http://www.rebel.nl/edsoft.htm {$MODE DELPHI} interface type TOpening = record code, name, moves: string; end; function GetOpening(const aMoves: string): string; implementation const DATA: array[1..1970] of TOpening = ( (code: 'A00'; name: 'Polish (Sokolsky) opening'; moves: 'b2b4'), ... ); function GetOpening(const aMoves: string): string; var i: integer; begin i := 0; repeat Inc(i); until (i > High(DATA)) or (DATA[i].moves = aMoves); if i > High(DATA) then result := '' else result := Concat(DATA[i].code, ' ', DATA[i].name); end; end.
Pour la commodité de la discussion, je joins l'unité complète, avec un programme de test, ainsi que le fichier texte original, et le programme que j'ai écrit pour extraire les données et fabriquer l'unité.
Partager