RU64

игровая программа по русским шашкам

Формат PDN (Portable Draughts Notation)

Формат файлов

PDN - формат простых текстовых файлов для хранения шашечных партий. Партии в таком файле хранятся последовательно, общим числом от нуля и более.

Каждая партия состоит из двух частей: метаданных и текста партии. Первая часть описывает партию в целом: турнир, имена игроков, результат и так далее. Вторая часть содержит ходы партии, записанные в полной нотации. Метаданные от текста партии отделяются пустой строкой.

Полностью одна партия в PDN-файле выглядит примерно так:

[White "Романов"]
[Black "Сычев"]
[Event "XII Чемпионат СССР"]
[Round "4"]
[Site "Киев"]
[Date "1950.3.20"]
[Result "2-0"]
[GameType "25"]

1. a3-b4 b6-a5 2. b2-a3 a7-b6 3. e3-d4 d6-c5 4. b4xd6 e7xe3 5.
d2xf4 f6-g5 6. f2-e3 g5-h4 7. g1-f2 b6-c5 8. c1-d2 d8-e7 9.
c3-d4 c7-d6 10. d4xb6 a5xc7 11. e3-d4 g7-f6 12. f4-e5 d6xf4 13.
g3xg7 h8xf6 14. a3-b4 e7-d6 15. a1-b2 h6-g5 16. b2-c3 f6-e5 17.
d4xf6 g5xe7 18. c3-d4 c7-b6 19. f2-e3 d6-c5 20. b4xd6 e7xc5 21.
d4-e5 c5-b4 22. e3-d4 b4-a3 23. d2-c3 b6-a5 24. e5-d6 a5-b4 25.
c3xa5 a3-b2 26. d6-e7 f8xd6 27. d4-c5 d6xb4 28. a5xa1 2-0

В свою очередь, каждая партия отделяется от следующей также пустой строкой.

Метаданные

Метаданные партии состоят из тегов - информационных меток. Каждый тег заключается в квадратные скобки, и состоит из названия тега и его значения в двойных кавычках. Названия тегов могут состоять только из латинских букв, цифр и знака подчеркивания.

В метаданных каждой партии должны присутствовать семь обязательных тегов, их назначение четко определено, но допускаются и дополнительные теги. Программа RU64 распознает и использует только обязательные теги и два дополнительных: указание типа шашечной партии и описание начальной позиции. Все теги могут принимать пустые значения.

[White "Кукуев"]
[White "Цирик З.И."]
[Black "Соков В."]
[Black "Плакхин А."]
[Event "XII Чемпионат СССР"]
[Event "Первенство ВЦСПС"]
[Round "5.3"]
[Round "12"]
[Site "Москва"]
[Site "Одесса"]
[Date "1973.10.11"]
[Date "1989"]
  • "1-0": выиграли белые
  • "2-0": выиграли белые
  • "0-1": выиграли черные
  • "0-2": выиграли черные
  • "1/2-1/2": ничья
  • "1-1": ничья
  • "*": результат неизвестен

Примеры:

[Result "2-0"]
[Result "1/2-1/2"]
[Result "*"]
[GameType "25"]
[GameType "25,W,8,8,A0,0"]

При отсутствии тега GameType или его пустом значении программа RU64 по умолчанию будет определять тип шашечной партии как партии в русские шашки.

[FEN "W:W13,22,23,24,25,26,27,28,29,30,31,32:B1,2,3,4,5,6,7,8,10,11,12,21"]
[FEN "B:W18,19,22,23,27,32:B7,10,12,K13,20"]

Значение каждого тега FEN состоит из трех частей, разделенных двоеточиями:

  • Первая часть с указанием очереди хода, символ W - для белых, символ B - для черных.
  • Две части с описанием расположения шашек каждой стороны. Если первым символом такой части является символ W, то далее в ней описывается расположение белых шашек, если символ B, то - черных.

Описание расположения шашек состоит из перечисления через запятую цифровых координат, на которых они расположены. Координаты - это цифры от 1 до 32. Возрастание координат идет со стороны черных, от восьмой горизонтали, где b8 = 1 и h8 = 4, и так далее до первой горизонтали, где a1 = 29 и g1 = 32. Для обозначения дамки перед координатой ставится символ K.

Текст партии

Текст партии состоит из ходов, записанных в полной нотации, и возможно, их номеров, комментариев, вариантов и завершающего маркера, равного значению тега Result в метаданных этой партии.

[White ""]
[Black ""]
[Event ""]
[Round ""]
[Site ""]
[Date ""]
[Result "2-0"]
[GameType "25"]
[FEN "W:WK26:B8,9,10,11,19"]

1. d2xh6xf8xc5xa7 f6-g5 2. a7-b8 g5-h4 3. b8-h2 h4-g3 4. h2xe5
2-0
1. c3-d4 f6-g5 2. b2-c3 g7-f6 3. c3-b4 h8-g7 4. b4-c5 d6xb4 5.
a3xc5 g5-h4 6. a1-b2 b6-a5 7. b2-a3 c7-b6 8. g3-f4 f6-g5 9.
d2-c3 d8-c7 10. c1-b2 c7-d6 11. a3-b4 e7-f6 12. c5xe7 f6xd8 13.
f4-e5 f8-e7 14. b4-c5 g7-f6 15. e5xg7 h6xf8 16. h2-g3 b8-c7 17.
b2-a3 g5-f4 18. e3xg5 h4xf6 19. g3-f4 c7-d6 20. e1-d2 d6xb4 21.
a3xc5 d8-c7 22. f4-e5 f8-g7 23. e5-d6 c7xe5 24. f2-g3 g7-h6 25.
g1-h2 h6-g5 { Просрочка времени } 0-2
1. g3-h4 d6-e5 2. h2-g3 e7-d6 3. e3-f4 h6-g5 4. f4xh6 e5-d4 5.
c3xe5 d6xh2 6. a3-b4 f6-e5 7. b2-c3 c7-d6 8. a1-b2 b8-c7 9.
d2-e3 b6-a5 10. b2-a3 c7-b6 11. c1-d2 b6-c5 12. f2-g3 h2xf4 13.
e3xg5 a7-b6 ( 13... c5-d4 14. g5-f6 d4xb2 15. a3xc1 a5xc3 16.
f6xb2 ) 14. g1-h2 2-0

Текст партии может отсутствовать, в этом случае вместо него должен быть представлен маркер результата партии. В сочетании с пустыми значениями тегов, такая корректная пустая партия выглядит так:

[White ""]
[Black ""]
[Event ""]
[Round ""]
[Site ""]
[Date ""]
[Result "*"]

*

Расширение формата

Для «летающих» шашек предусмотрено расширение формата PDN-файлов. Чтобы определить начальную позицию, перед ходами партии можно указать специальные команды, описывающие перемещение шашек из классической начальной позиции на другие поля. При этом в метаданных партии не должно быть тега FEN.

Пример таких команд:

d2>h4 e7>c5 1. g3-f4 b6-a5

В этом примере сначала определяется новая начальная позиция, отличная от классической: белая шашка с поля d2 переставляется на поле h4, а затем черная шашка e7 переставляется на c5, и далее идут ходы партии.

Такие специальные команды для «летающих» шашек можно задавать только перед всеми ходами партии, по одной для каждой стороны, если одна из команд пропускается, то она должна быть заменена символом тире ("").

Примерный фрагмент текста партии для такого случая:

g3>h4 - 1. e3-d4 d6-c5

Полный пример партии с «летающими» шашками и специальными командами:

[White "Плакхин А."]
[Black "Асадов Д."]
[Event "Чемпионат мира"]
[Round ""]
[Site ""]
[Date "1996.10.17"]
[Result "2-0"]
[GameType "25"]

a3>d4 g7>a5 1. g3-f4 d6-e5 2. f4xd6 e7xc5 3. d4-e5 f6xd4 4.
c3xe5 d8-e7 5. h2-g3 c7-d6 6. e5xc7 b6xd8 7. b2-c3 a7-b6 8.
a1-b2 c5-b4 9. e3-d4 b4-a3 10. d4-c5 b6xd4 11. c3xe5 f8-g7 12.
g3-f4 g7-f6 13. e5xg7 h6xf8 14. f2-g3 b8-c7 15. b2-c3 c7-d6 16.
f4-g5 h8-g7 17. g5-h6 g7-f6 18. g1-f2 d6-e5 19. f2-e3 e7-d6 20.
g3-h4 d8-c7 21. e1-f2 d6-c5 22. f2-g3 c5-b4 23. g3-f4 e5xg3 24.
h4xf2 f8-e7 25. e3-f4 e7-d6 26. f4-g5 f6xh4 27. h6-g7 d6-e5 28.
g7-h8 e5-f4 29. d2-e3 b4xd2 30. e3xg5 h4xf6 2-0

В целях совместимости с другими игровыми программами, программа RU64 поддерживает данное расширение только при загрузке и вставке партий. При сохранении или добавлении в PDN-файл партий с «летающими» шашками будет использован стандартный тег FEN, а специальные команды вынесены в комментарий перед первым ходом.

Ссылки

Более подробную информацию о формате PDN-файлов можно узнать по ссылкам: