понедельник, 18 ноября 2013 г.

3. Запись шахматной партии на компьютере. Формат PGN.

       Недавно при подготовке к игре с сильным соперником, случилась забавная ситуация. Я должен был играть с одним из ветеранов нашего шахматного клуба, ему уже более 60 лет.
       Мой папа, узнав об этом сказал: « Я играл с ним 20 лет назад, ему тогда было за 40 лет, в таком возрасте дебютных пристрастий не меняют, сейчас я найду эти партии, и ты сможешь как следует подготовиться».
Папа достал свою коробку с пожелтевшими от времени блокнотиками, аккуратно подшитыми выцветшими на солнце листками с записью партий и начал их перебирать. Провозился он где-то минут 30, но нужных записей партий так и не нашёл. Мне, чтобы найти любую свою партию требуется 30 секунд, они хранятся у меня в электронном виде на компьютере. Не зная, какой дебют будет играть мой соперник, я не стал готовится к игре.
Уже после игры выяснилось, отец оказался прав — ветеран играл тот же дебют, что и 20 лет назад. Причём вариант, который современной шахматной теорией признаётся ошибочным, но мне без дебютной подготовки найти опровержение его защиты не удалось, и я проиграл.
       Сегодня я расскажу вам (не без помощи отца, конечно), как сохранить свои шахматные партии на компьютере с помощью самого распространённого файлового формата для хранения и обмена шахматными данными — формата PGN.
       Формат PGN (Portable Game Notation) — файловый стандарт, разработанный для представления шахматных данных с использованием текстовых символов (ASCII). Файл имеет вид "название.pgn", по сути это структурированный текстовый файл, который можно открыть и редактировать с помощью любого текстового редактора (Word, Notepad и т.д.), но делать этого не стоит. Во-первых, вы можете повредить структуру файла, а во-вторых, существуют специальные программы для записи и чтения файлов PGN (с этими программами я познакомлю вас в следующей статье).
       Полную спецификацию на формат PGN на английском языке (более 20 страниц) можно посмотреть здесь: http://www6.chessclub.com/help/PGN-spec. Я же постараюсь кратко и понятно изложить основные положения, исключив сведения для программистов и разработчиков.
       Файл PGN, состоит из двух разделов, первый раздел идентифицирует шахматную партию (где, когда, кто с кем и т.д.), второй раздел это запись шахматных ходов. Для наглядности я приведу пример записи партии в формате PGN (сказочная партия по мотивам книг о Гарри Поттере). Сама запись партии в формате pgn дана в сине-голубых тонах, а мои пояснения с правой стороны показаны чёрным цветом.
       Синим цветом записана информация, которую нельзя редактировать (программные теги, специальные скобки и алгебраическая нотация записи ходов),
голубым — переменные значения, которые вы можете изменять, руководствуясь моими пояснениями в этой же строке с правой стороны.
       Первые семь строк идентификационного раздела (они выделены жирным шрифтом) должны быть обязательно в любом файле PGN и именно в такой последовательности. Остальные располагаются в алфавитном порядке или могут вообще отсутствовать, это как бы дополнительная информация, которая используется не всегда.
       Информацию о турнире, игроках, месте проведения и т.д. нужно писать на английском языке (по крайней мере, английскими буквами), так как многие программы для работы с PGN файлами не понимают кириллицу. Я поначалу писал по-русски, но столкнувшись с проблемой «иероглифов», которые выдают многие программы вместо русских букв, окончательно сделал выбор в пользу английского, это же рекомендует и стандарт формата PGN и так же принято в FIDE.
       Теперь, собственно, сама партия, записанная в формате PGN:

[Event "Cup of Hogwarts "]  название турнира или матча
[Site "Hogwarts ENG"]  место проведения — название города, области и страны из 3 букв (МОК)
[Date "1985.08.21"]  дата начала партии, в формате "YYYY.MM.DD", YYYY — год, MM — месяц, DD — день
[Round "4"]  номер игрового тура (раунда) игры
[White "Potter, Harry"]  игрок белыми фигурами — фамилия, после запятой и пробела имя или инициалы
[Black "Granger, Hermione"]  игрок чёрными фигурами — фамилия, после запятой и пробела имя или инициалы
[Result "0-1"]  результат партии, может быть "1-0", "0-1", "1/2-1/2", или "*" (результат неизвестен)
[Annotator "Weasley, Ron"]  фамилия и имя человека, написашего комментарии к данной партии
[BlackElo "1800"]  рейтинг игрока чёрными фигурами по версии ФИДЕ
[Board "4"]  номер доски для командных игр
[ECO "C50"]  код дебюта из энциклопедии дебютов (Encyclopedia of Chess Openings, ECO).
[EventDate "1985.08.19"]  дата начала турнира (чемпионата), в формате: "YYYY.MM.DD"
[Opening "?"]  название разыгранного дебюта
[PlyCount "?"]  общее количество сделанных в партии ходов белыми и чёрными
[TimeControl "3600"]  контроль времени в секундах, добавленное время пишется после "+"
[WhiteElo "-"]  рейтинг игрока белыми фигурами по версии ФИДЕ, если нет, то "-"
   <— (обязательная пустая строка, разделяющая два раздела)
1. e4 e5 2. Nf3 Nc6 3. Bc4 Nd4 $6 4. Nxe5 $2 (4. Nxd4 exd4 5. O-O) 4... Qg5 $1 5. Nxf7 $4 {Crucial mistake} 5... Qxg2 6. Rf1 Qxe4+ 7. Be2 Nf3# {Hermione Granger checkmated}   Запись ходов партии с помощью Стандартной Алгебраической Нотации см. таблицу ниже.
  $6,$2,$4 — метки NAG, кратко характеризуют ход или позицию, подробности см. ниже.
  (4. Nxd4 exd4 5. O-O) — альтернативное ответвление партии, заключается в круглые скобки,
  показывает как могла играться партия при другом ходе.
  {Crucial mistake} — текстовый комментарий к ходу или позиции, заключается в фигурные скобки.
0-1   завершающий маркер — результат партии, совпадает со значением тега Result.

Стандартная Алгебраическая Нотация

       Для записи ходов в PGN используется Standard Algebraic Notation (SAN) в переводе на русский "Стандартная алгебраическая нотация" с использованием латинского алфавита ASCII.
SAN идентифицирует каждый из 64 квадратов на шахматной доске двумя символами. Первый символ записывает столбец доски (от a до h). Второй символ записывает строку (от 1 до 8). Шахматная фигура записывается одной заглавной буквой: конь = "N", слон = "B", ладья = "R", ферзь = "Q", король = "К", у пешки буква не пишется.
       Вам не придётся в ручную записывать на компьютере шахматные партии, вы будете перемещать фигуры мышкой по виртуальной шахматной доске на экране вашего компьютера и программа сама запишет партию в правильном формате, поэтому я не буду подробно описывать SAN, кто не знаком с ней почитайте в Wikipedia эти статьи: на английском — Chess notation и Algebraic notation (chess)
на русском только одна статья и то весьма примитивная: Шахматная нотация, это лучше чем ничего ...
       Современные программы для чтения файлов PGN позволяют преобразовывать для отображения на экране SAN в другие нотации, в Figurine Algebraic Notation (Фигурная алгебраическая нотация), она использует миниатюрные иконки шахматных фигур вместо одной буквы сокращённого названия, или даже в русскую шахматную нотацию. Главное найти соответствующую настройку программы и включить понравившуюся нотацию. Для сравнения шахматных нотаций, сделал таблицу. Какую бы нотацию для просмотра шахматных партий вы не выбрали, сам файл PGN останется записанным в Standard Algebraic Notation (SAN).

Шахматные
нотации
Шахматные фигуры
Запись
шахматной
партии
King
Queen
Rook
Bishop
Knight
Pawn
Figurine Algebraic Notation
(FAN)
1. e4 e5 2. ♘f3 ♘c6 3. ♗c4 ♘d4
4. ♘xe5 ♕g5 5. ♘xf7 ♕xg2
6. ♖f1 ♕xe4+ 7. ♗e2 ♘f3#
Standard Algebraic Notation
(SAN)
K
Q
R
B
N

no symbol
без символа
1. e4 e5 2. Nf3 Nc6 3. Bc4 Nd4
4. Nxe5 Qg5 5. Nxf7 Qxg2
6. Rf1 Qxe4+ 7. Be2 Nf3#
Русская
алгебраическая
нотация
Кр
Ф
Л
С
К
без символа 1. e4 e5 2. Кf3 Кc6 3. Сc4 Кd4
4. К:e5 Фg5 5. К:f7 Ф:g2
6. Лf1 Ф:e4+ 7. Сe2 Кf3х

Метки Numeric Annotation Glyph (NAG)

Метка NAG ставится после хода и используется для краткой характеристики хода или позиции с помощью символов "!","?", "!!", "??", "!?","?!", и т.д. Сделал таблицу основных меток NAG, которые понимают большинство шахматных программ, остальные я вам использовать не рекомендую. Сам я пользуюсь только первыми 6 метками, их понимают все программы. Сами метки знать не обязательно, программы сами преобразуют поставленный вами знак в нужную метку, а вот, что означает данный знак (аннотация), надо запомнить.

NAGЗнак АннотацияNAGЗнак Аннотация
$1 ! Сильный ход $14 += У белых небольшое преимущество
$2 ? Слабый ход $15 =+ У чёрных небольшое преимущество
$3 !! Отличный ход $16 ± У белых умеренное преимущество
$4 ?? Грубая ошибка $17 У чёрных умеренное преимущество
$5 !? Интересный ход $18 +− У белых решающее преимущество
$6 ?! Сомнительный ход $19−+ У чёрных решающее преимущество
$10 = Ничейная позиция $36 Инициатива у белых(чёрных)
$13 Позиция неясная $40 С атакой у белых(чёрных)

Создание библиотеки шахматных партий на компьютере

       Не пугайтесь обилия незнакомых терминов в представленном мной кратком обзоре формата PGN, на самом деле там всё очень просто. Основную работу по записи шахматных партий на компьютер будут выполнять специальные программы (о них в следующей статье). Ваша задача только перемещать фигуры мышкой по виртуальной шахматной доске на экране дисплея и программа сама запишет партию. Плюс вам нужно будет ввести в специальные графы информацию о партии (где, когда, кто с кем и т.д.), причем, если вы не знаете что писать, просто оставляйте графу пустой, программа сама заполнит или поставит знак «?», означающий отсутствие информации.
       Многие программы для чтения и редактирования файлов PGN сами создают библиотеки из ваших партий, достаточно только открыть одну партию и кликнуть «New game», и ваша новая партия будет записана в том же файле, что и первая. Можно сделать это и вручную, например, у вас есть 2 файла .pgn и вы хотите их объединить, достаточно открыть их с помощью любого текстового редактора (Word, Notepad и т.д.) и, используя «copy-paste», скопировать всю запись одного файла в другой, обязательно отделив их одной пустой строкой. Сохраните этот файл, это будет библиотека ваших партий, также можно добавлять и следующие партии. Теперь при открытии этого файла программой для чтения файлов PGN, будет появляться табличка, в которой можно выбрать нужную для просмотра партию.
       В качестве тренировки или домашнего задания, попытайтесь сохранить две партии с официального сайта проходящего сейчас чемпионата мира по шахматам. Откройте текстовый редактор "Notepad" (он встроен во все Windows), скопируйте в него текст выделенный синим цветом, дальше нажмите "File", выберите пункт "Save As...", дайте название файлу Test.pgn и нажмите "Save". Всё, у вас в папке "Documents" сохранится библиотека из 2 партий в формате pgn. Какими программами можно их посмотреть я расскажу в следующей статье.

[Event "WCh 2013"]
[Site "Chennai IND"]
[Date "2013.11.15"]
[Round "5"]
[White "Carlsen, Magnus"]
[Black "Anand, Viswanathan"]
[Result "1-0"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
[WhiteElo "2870"]
[BlackElo "2775"]
[ECO "D31"]
[Opening "QGD"]
[Variation "semi-Slav, Marshall gambit"]
[WhiteFideId "1503014"]
[BlackFideId "5000017"]
[EventDate "2013.11.09"]

1. c4 e6 2. d4 d5 3. Nc3 c6 4. e4 dxe4 5. Nxe4 Bb4+ 6. Nc3 c5 7. a3 Ba5 8. Nf3
Nf6 9. Be3 Nc6 10. Qd3 cxd4 11. Nxd4 Ng4 12. O-O-O Nxe3 13. fxe3 Bc7 14. Nxc6
bxc6 15. Qxd8+ Bxd8 16. Be2 Ke7 17. Bf3 Bd7 18. Ne4 Bb6 19. c5 f5 20. cxb6 fxe4
21. b7 Rab8 22. Bxe4 Rxb7 23. Rhf1 Rb5 24. Rf4 g5 25. Rf3 h5 26. Rdf1 Be8 27.
Bc2 Rc5 28. Rf6 h4 29. e4 a5 30. Kd2 Rb5 31. b3 Bh5 32. Kc3 Rc5+ 33. Kb2 Rd8 34.
R1f2 Rd4 35. Rh6 Bd1 36. Bb1 Rb5 37. Kc3 c5 38. Rb2 e5 39. Rg6 a4 40. Rxg5 Rxb3+
41. Rxb3 Bxb3 42. Rxe5+ Kd6 43. Rh5 Rd1 44. e5+ Kd5 45. Bh7 Rc1+ 46. Kb2 Rg1 47.
Bg8+ Kc6 48. Rh6+ Kd7 49. Bxb3 axb3 50. Kxb3 Rxg2 51. Rxh4 Ke6 52. a4 Kxe5 53.
a5 Kd6 54. Rh7 Kd5 55. a6 c4+ 56. Kc3 Ra2 57. a7 Kc5 58. h4 1-0

[Event "WCh 2013"]
[Site "Chennai IND"]
[Date "2013.11.16"]
[Round "6"]
[White "Anand, Viswanathan"]
[Black "Carlsen, Magnus"]
[Result "0-1"]
[WhiteTitle "GM"]
[BlackTitle "GM"]
[WhiteElo "2775"]
[BlackElo "2870"]
[ECO "C65"]
[Opening "Ruy Lopez"]
[Variation "Berlin defence"]
[WhiteFideId "5000017"]
[BlackFideId "1503014"]
[EventDate "2013.11.09"]

1. e4 e5 2. Nf3 Nc6 3. Bb5 Nf6 4. d3 Bc5 5. c3 O-O 6. O-O Re8 7. Re1 a6 8. Ba4
b5 9. Bb3 d6 10. Bg5 Be6 11. Nbd2 h6 12. Bh4 Bxb3 13. axb3 Nb8 14. h3 Nbd7 15.
Nh2 Qe7 16. Ndf1 Bb6 17. Ne3 Qe6 18. b4 a5 19. bxa5 Bxa5 20. Nhg4 Bb6 21. Bxf6
Nxf6 22. Nxf6+ Qxf6 23. Qg4 Bxe3 24. fxe3 Qe7 25. Rf1 c5 26. Kh2 c4 27. d4 Rxa1
28. Rxa1 Qb7 29. Rd1 Qc6 30. Qf5 exd4 31. Rxd4 Re5 32. Qf3 Qc7 33. Kh1 Qe7 34.
Qg4 Kh7 35. Qf4 g6 36. Kh2 Kg7 37. Qf3 Re6 38. Qg3 Rxe4 39. Qxd6 Rxe3 40. Qxe7
Rxe7 41. Rd5 Rb7 42. Rd6 f6 43. h4 Kf7 44. h5 gxh5 45. Rd5 Kg6 46. Kg3 Rb6 47.
Rc5 f5 48. Kh4 Re6 49. Rxb5 Re4+ 50. Kh3 Kg5 51. Rb8 h4 52. Rg8+ Kh5 53. Rf8 Rf4
54. Rc8 Rg4 55. Rf8 Rg3+ 56. Kh2 Kg5 57. Rg8+ Kf4 58. Rc8 Ke3 59. Rxc4 f4 60.
Ra4 h3 61. gxh3 Rg6 62. c4 f3 63. Ra3+ Ke2 64. b4 f2 65. Ra2+ Kf3 66. Ra3+ Kf4
67. Ra8 Rg1 0-1

       В заключении, для показа как всё это работает, я ввёл последнюю партию, дополнив её своими комментариями, в программу для просмотра файлов PGN. Теперь вам не надо расставлять шахматы, чтобы посмотреть эту партию, достаточно пощёлкать мышкой по стрелочке под доской. Удачного просмотра! На старых браузерах работать не будет (необходим Adobe® Flash Player)!


Фотка этих ребят, сражающихся за мировую шахматную корону, сделанная талантливым фотографом Анастасией Карлович.

Игра 6 (16.11.2013) Ананд (Индия) — Карлсен (Норвегия)

Комментариев нет :