RU64

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

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

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

PDN - переносимый формат текстовых файлов для сохранения шашечных партий. Партии в таком файле, обычно с расширением имени .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-файлов можно узнать по ссылкам: