可移植式棋局记号法

维基百科,自由的百科全书
扩展名
.pgn
互联网媒体类型
application/vnd.chess-pgn
开发者Steven J. Edwards
首次发布1993年,​31年前​(1993
格式类型国际象棋棋谱

可移植式棋局记号法(英语:Portable Game Notation,PGN),是一种用于纪录国际象棋棋局的纯文字档案格式。PGN适合人类阅读,多数的国际象棋软体都有支援。

历史[编辑]

Steven J. Edwards在1993年左右发明了PGN格式,PGN后来在Usenet新闻群组“rec.games.chess”中受到详细制定及推广。[1][2]

使用[编辑]

PGN的副档名是.pgn。PGN的规范风格是为了“使人类能简易地阅读和书写,也让电脑能简易地解析和产生”,PGN中的棋谱代数记谱法表示。

PGN对程式规范了输入和输出两种格式。输入格式被刻意规定得比较宽松,方便人类手动输入,支援PGN的程式需具备一些容错能力;输出格式被定义得相对严格,程式需美化输出文字以便阅读。对于相同的输入,不同程式所输出的PGN应完全相同。

PGN文件以数个“标签对”(包含标签名称和对应参数)开头,之后是棋局的棋谱区块“movetext”(包含代数棋谱和可选填的注解)。

标签对[编辑]

一个标签对(tag pair)以[开头,之后是标签名称,然后是以双引号")框起的对应参数,最后以]结尾。若要在参数中使用引号和反斜线,需在前面加上反斜线作为跳脱字元,此跳脱字元不作其他的控制用途。

七个必填的标签对[编辑]

为了归档保存,一个PGN文件必须要有七种标签对,此七种标签对被人合称为“Seven Tag Roster”。在输出格式中,这七个标签对需摆在所有的标签对前面,并遵照以下顺序出现:

标签 参数
Event 棋局所在的赛事名称。
Site 棋局的发生地点,格式为"城市, 地區 國家",其中国家栏位为3个英文字母的国际奥委会国家或地区编码。例如:"New York City, NY USA"表示美国纽约州纽约市。
一些线上国际象棋英语Online chess网站会以网址作为Site参数,[3]但是PGN的规范中未提及这种做法。
Date 棋局开始的日期,格式为"YYYY.MM.DD",或填入"??"表示日期未知。
Round 棋局在赛事中的回合编号。
White 白方棋手的名字,格式为"姓氏, 名稱"
Black 黑方棋手的名字,格式和白方一样。
Result 对局的结果,格式为"白方得分-黑方得分",或填入"*"表示其他结果(例如:对局尚未结束)。

选填的标签对[编辑]

以下为一些较常见的可选标签对:

标签 参数
Annotator 棋局评注者的名字。
PlyCount 白方和黑方共下了几步的棋。
TimeControl 棋钟设定的时间限制。例如:"40/7200:3600"表示双方都有7200秒的时间下前40步棋,之后在对局结束前各有3600秒的时间。
Time 棋局开始时的当地时间,格式为"HH:MM:SS"
Termination 棋局结束的原因,可设为"abandoned"(抛弃对局)、"adjudication"(裁判依局面判定对局结果)、"death"(棋手死亡)、"emergency"(紧急情况)、"normal"(正常结束)、"rules infraction"(棋手违反规则)、"time forfeit"(棋手因为超过时间限制而输棋)或"unterminated"(尚未结束)。
Mode 比赛模式:"OTB"(over-the-board,实体对局)或"ICS"(Internet Chess Server,线上对局)。
FEN 各棋子的起始位置,以FEN格式表示。可用于国际象棋变体或某方选手让子的情况。
须将SetUp参数设为"1"
SetUp 使用FEN标签时必须将此参数设为"1"

棋谱区块[编辑]

棋谱区块(movetext)纪录的是棋手对弈的过程。其包括步数编号、行棋方指示(以一个句点“.”表示此步为白方行棋;三个句点表示黑方),以及用代数记谱法描述的棋子移动。

代数棋谱[编辑]

注解[编辑]

在一行文字的前方加上分号;),可使其成为单行注解;跨行的注解需以花括号{})包围两侧。

范例[编辑]

以下PGN档案记录著在南斯拉夫举行的1992年比赛英语Fischer–Spassky (1992 match)的第29场棋局。由鲍比·菲舍尔执白,对决鲍里斯·斯帕斯基

[Event "F/S Return Match"]
[Site "Belgrade, Serbia JUG"]
[Date "1992.11.04"]
[Round "29"]
[White "Fischer, Robert J."]
[Black "Spassky, Boris V."]
[Result "1/2-1/2"]

1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 {This opening is called the Ruy Lopez.}
4. Ba4 Nf6 5. O-O Be7 6. Re1 b5 7. Bb3 d6 8. c3 O-O 9. h3 Nb8 10. d4 Nbd7
11. c4 c6 12. cxb5 axb5 13. Nc3 Bb7 14. Bg5 b4 15. Nb1 h6 16. Bh4 c5 17. dxe5
Nxe4 18. Bxe7 Qxe7 19. exd6 Qf6 20. Nbd2 Nxd6 21. Nc4 Nxc4 22. Bxc4 Nb6
23. Ne5 Rae8 24. Bxf7+ Rxf7 25. Nxf7 Rxe1+ 26. Qxe1 Kxf7 27. Qe3 Qg5 28. Qxg5
hxg5 29. b3 Ke6 30. a3 Kd6 31. axb4 cxb4 32. Ra5 Nd5 33. f3 Bc8 34. Kf2 Bf5
35. Ra7 g6 36. Ra6+ Kc5 37. Ke1 Nf4 38. g3 Nxh3 39. Kd2 Kb5 40. Rd6 Kc5 41. Ra6
Nf2 42. g4 Bd3 43. Re6 1/2-1/2

应用于国际象棋变体[编辑]

许多国际象棋变体都能以PGN格式记录,但是要把每种棋子的简称都限制在一个字内。这种PGN中通常会包含一个变体(variant)标签,用来描述变体的名称。FEN标签可用于设定各棋子的起始位置,有些变体如菲舍尔任意制象棋会有特别的起始位置。

参见[编辑]

参考文献[编辑]

  1. ^ The Rise of Internet Chess页面存档备份,存于互联网档案馆), Mark Weeks' chess pages
  2. ^ Standard: Portable Game Notation Specification and Implementation Guide. Internet Archive. 12 March 1994 [25 July 2020].  The page linking to the document is here.
  3. ^ For example, the PGN generated by lichess for the online match between grandmasters Pavel Smirnov and Andrew Tang (2020)[失效链接] lists a URL in the site field.