可移植式棋局記號法
此條目可参照英語維基百科相應條目来扩充。 (2022年6月18日) |
可移植式棋局記號法(英語:Portable Game Notation,PGN),是一種用於紀錄國際象棋棋局的純文字檔案格式。PGN適合人類閱讀,多數的國際象棋軟體都有支援。
扩展名 |
.pgn |
---|---|
互联网媒体类型 |
application/vnd.chess-pgn |
开发者 | Steven J. Edwards |
首次发布 | 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" 表示美國紐約州紐約市。一些線上國際象棋網站會以網址作為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 | 使用FEN標籤時必須將此參數設為"1" 。
|
棋譜區塊
棋譜區塊(movetext)紀錄的是棋手對弈的過程。其包括步數編號、行棋方指示(以一個句點「.
」表示此步為白方行棋;三個句點表示黑方),以及用代數記譜法描述的棋子移動。
代數棋譜
註解
在一行文字的前方加上分號(;
),可使其成為單行註解;跨行的註解需以花括號({
、}
)包圍兩側。
範例
以下PGN檔案記錄著在南斯拉夫舉行的1992年比賽的第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標籤可用於設定各棋子的起始位置,有些變體如菲舍爾任意制象棋會有特別的起始位置。
參見
- 福斯夫-愛德華茲記號法(FEN)
- X-FEN
- 可移植式西洋跳棋記號法(PDN)
- Smart Game Format(一種圍棋的記錄格式)
參考文獻
- ^ The Rise of Internet Chess (页面存档备份,存于互联网档案馆), Mark Weeks' chess pages
- ^ Standard: Portable Game Notation Specification and Implementation Guide. Internet Archive. 12 March 1994 [25 July 2020]. The page linking to the document is here.
- ^ 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.