可移植式棋局記號法

国际象棋记谱文件格式

可移植式棋局記號法(英語:Portable Game Notation,PGN),是一種用於紀錄國際象棋棋局的純文字檔案格式。PGN適合人類閱讀,多數的國際象棋軟體都有支援。

扩展名
.pgn
互联网媒体类型
application/vnd.chess-pgn
开发者Steven J. Edwards
首次发布1993年,​31年前​(1993
格式类型國際象棋棋譜

歷史

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.