一、概述 PGN(Portable Game Notation)是棋類遊戲過程的檔案格式,既然國際象棋以這個規範作為記錄棋譜的标準,那麼對于中國象棋來說,在還沒有一個統一标準的今天, PGN無疑是一個好的選擇。 PGN檔案有以下特點: (1) PGN檔案是文本格式的,可以用任何文本編輯軟體建立和修改; (2) PGN檔案分為“标簽部分”和“着法部分”,兩部分都規範整齊,既友善閱讀,也便于棋譜編輯軟體産生和解讀; (3) 一個 PGN檔案允許包含多個棋局,形成簡易的棋譜資料庫; (4) PGN檔案的格式是公開的,現在已經被絕大多數棋譜編輯軟體所接受 (僅指國際象棋,目前還沒有可以産生 PGN檔案的中國象棋軟體 )。 二、标簽部分 PGN的标簽都是由方括号“ []”表示的内容,每個标簽占一行,它們反映了棋局的一些基本情況。中國象棋的 PGN記譜規範同國際象棋類似,基本标簽有: (0) Game:遊戲類型,國際象棋沒有這個标簽,中國象棋的 PGN檔案中這個标簽必須放在第一位,其值必須為“ Chinese Chess”; (1) Event:比賽名; (2) Site:比賽地點; (3) Date:比賽日期,格式統一為“ yyyy.mm.dd”; (4) Round:比賽輪次; (5) Red:紅方棋手,不同與國際象棋的 White; (6) Black:黑方棋手; (7) Result:比賽結果,“紅先勝”用“ 1-0”表示,“黑先勝”用“ 0-1”表示,和棋用“ 1/2-1/2”表示,未知用“ *”表示。 另外還要增加具有中國象棋比賽特點的資訊: (8) RedTeam和 BlackTeam:這是棋手所屬的代表隊 (俱樂部、棋協、省份或國家 ),它們通常寫在 Red和 Black标簽的前面; (9) Opening、 Variation和 ECCO:開局名稱、變例和 ECCO編号,這些都代表開局的資訊,可參考《 中國象棋開局編号——說明》一文; 這裡舉一個例子說明: [Game "Chinese Chess"] [Event "第24屆“五羊杯”全國冠軍邀請賽"] [Site "廣州"] [Date "2004.01.05"] [Round "決賽(加賽)"] [RedTeam "廣州"] [Red "呂欽"] [BlackTeam "廣州"] [Black "許銀川"] [Result "1-0"] [Opening "中炮過河炮對左三步虎"] [ECCO "B24"] (10) FEN:開始局面,中局、殘局和排局等擺出來的局面,作棋譜記錄時通常要規定這個選項; (11) Format:表示記譜方法,可以是 Chinese(中文縱線格式 )、 WXF(WXF縱線格式 )和 ICCS(ICCS坐标格式 ),預設為 Chinese。 以下資訊可以作為标簽存在,也可以寫在注釋中: (1) 棋手相關資訊:紅方有 RedTitle、 RedElo、 RedNA(這項通常會被 RedTeam所取代 )、 RedType等,黑方寫法雷同; (2) 賽事相關資訊: EventDate、 EventSponsor、 Section、 Stage、 Board、 Time等; (3) 時限:以 TimeControl為标簽的多種表示。 (4) 對局結論,以 Termination為标簽的多種表示。 (5) 其他,諸如 Annotator、 Mode、 PlyCount等,請參閱《 國際象棋譯文苑》文摘—— 關于PGN和FEN記譜規範(上)一文。 三、棋譜部分 這部分是 PGN的主要内容,記錄了每一回合的着法、評注和結果。對于這部分内容的格式,有以下幾個規定: (1) 棋譜部分必須在标簽部分的後面,棋譜部分當中不能插入标簽; (2) 每一回合都由“回合數”、“紅方着法”和“黑方着法”三部分組成,回合數後面要跟“ .” (句點 ),三者之間用兩個分隔符隔開 (回合數後面的句點也不例外 ),回合之間也用分隔符隔開; (3) 着法的表示必須和 Format标簽相統一,如果沒有 Format标簽,則用中文縱線格式來表示; (4) 分割符隻能是空格、制表符或換行符,一個着法當中不能有分割符 (回合數也一樣 ); (5) 評注用花括号“ {}”表示,評注内可以是除花括号以外的任何字元 (包括分割符 ),評注可以插在任何着法的後面,它和着法之間必須用分割符隔開; (6) 整個棋局結束時必須用“ 1-0” (紅方勝 )、“ 0-1” (黑方勝 )、“ 1/2-1/2” (和棋 )或“ *” (未知 )表示結果,結果和着法之間必須用分割符隔開; (7) 結果以後隻能有評注,不能有着法;如果出現标簽,則說明這是下一局棋。 例如,下列 PGN檔案的片段是允許的: 51. 兵五平六 {紅方這一步長将還不足以判負, 但是下一次就要判負了。} 将4平5 52. 兵六平五 将5平4 53. 兵五平六 0-1 {紅方長将判負} 又例如,下列 PGN檔案的片段是不合理的: 51.兵五平六 将4平5 // 句點後面應該加分割符 [Format "WXF"] 52. P6.5 K5.4 // 棋譜部分不能含有标簽 53. 兵五{再平六就要判負了}平四 // 評注不能把一個着法拆散 四、舉例 下面是一個很經典的例子,這個例子能很好地反映中國象棋 PGN格式的特點:
|
- 1. 炮八平五 炮8平5
- { 紅方首着架中炮必走之着,聶棋聖還架中炮拼兌子力,戰術對頭。}
- 2. 炮五進五 象7進5 3. 炮二平五
- { 再架中炮也屬正着,如改走馬八進七,則象5退7,紅方帥府受攻,當然若紅方仍再架中炮拼兌,那麼失去雙炮就難有作用了。}
- 馬8進7 4. 馬二進三 車9平8 5. 馬八進七 馬2進1 6. 車九平六 車1平2
- { 聶棋聖仍按正常戰法出動主力,卻忽略了紅方車塞象眼的兇着,應走車1進1。}
- 7. 車六進八
- { 紅車疾點象眼,局勢霎時有劍拔弩張之感。這種對弈不能以常理揣度,紅方隻能像程咬金的三闆斧一般猛攻一輪,若黑方防守得法則勝負立判。}
- 炮2進7
- { 卻說聶棋聖見我來勢洶洶,神色頓時頗為凝重,一番思索之後沉下底炮以攻為守,果是身手不凡。此着如改走炮2平3,則帥五平六,炮3進5,車六進一,将5進1,炮五退二,黑方不易駕馭局面。}
- 8. 車一進四 炮2平1 9. 馬七進八 炮1退4 10. 馬八退七 炮1進4 11. 馬七進八 車2進2
- { 其實黑方仍可走炮1退4,紅方若續走馬八退七,則仍炮1進4不變作和,因黑右車叫将紅可車六退九,故不算犯規。}
- 12. 炮五平八 炮1退4
- { 劣着,導緻失子,應走車2平3,紅方如馬八進六,則車3退1,紅方無從着手。但有一點必須注意,黑車躲進暗道似與棋理相悖,故聶棋聖棄子以求局勢緩和情有可原。}
- 13. 炮八進五 炮1平9 14. 炮八平三 車8進2 15. 炮三進一 車8進2 16. 馬八進六 炮9平5
- 17. 炮三平一 士6進5 18. 馬六進四 車8平5 19. 帥五平六
- { 可直接走馬四進三叫将再踩中象。}
- 車5平6 20. 馬四進三 将5平6 21. 車六退四 卒5進1 22. 車六進二 炮5平7
- 23. 前馬退二 象5進7 24. 馬二退三 卒5進1 25. 車六平三 卒5平6 26. 車三進三 将6進1
- 27. 後馬進二 士5進6 28. 馬二進三 将6平5 29. 前馬進二
- { 紅方有些拖沓,應直接走車三平六立成絕殺。}
- 将5進1 30. 車三平六 士6退5 31. 馬二退三 車6退1 32. 車六退三
- { 再擒一車,以下着法僅是聊盡人事而已。}
- 車6平7 33. 車六平三 卒6平7 34. 車三平五 将5平6 35. 帥六平五 将6退1
- 36. 車五進二 将6退1 37. 車五進一 将6進1 38. 車五平七
- { 至此,聶棋聖認負。與此同時,另一盤圍棋對弈我被屠去一條大龍,已無力再戰,遂平分秋色,皆大歡喜。}
- 1-0 五、變着 變着用圓括号“ ()”表示,變着是以棋譜的形式對棋譜的評注,是以括号裡的内容本身也是棋譜,裡面還可以嵌套評注 (用花括号 )和變着 (用圓括号 )。變着針對的是括号前的着法,例如在下面一段棋譜中,變着指的是“炮2進7”改走“炮2平3”:
- 7. 車六進八 炮2進7 (7. ... 炮2平3 8. 帥五平六 炮3進5 9. 車六進一 将5進1 10. 炮五退二 {黑方不易駕馭局面}) 六、 PGN 與 XML 如今網絡技術發展飛快,棋譜要能釋出在網際網路上,需要一種容易被網際網路應用程式所識别的格式, XML 無疑是一種好的選擇。由于 PGN 的标簽和 XML 的容器具有類似之處,是以 PGN 和 XML 的轉換非常友善。目前 XML 的棋譜規範尚未形成,但是隻要照搬 PGN 格式的内容,就不難形成一個公認的 XML 格式。例如,上面一個執行個體轉化為 XML 格式的文本,就可以是以下形式:
- <pgn>
- <game> Chinese Chess </game>
- <event> 許銀川讓九子對聶棋聖 </event>
- <site> 廣州 </site>
- <date> 1999.12.09 </date>
- <red> 許銀川 </red>
- <black> 聶衛平 </black>
- <result> 1-0 </result>
- <fen> rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/9/1C5C1/9/RN2K2NR r - - 0 1 </fen>
- <comment>評注:許銀川
- 象棋讓九子原屬茶餘飯後的娛樂,不意今日卻被擺上賽桌,更為離奇的是:我的對手竟是在圍棋棋壇上叱咤風雲的聶大帥。賽前我并不了解對手的實力,但相信以聶棋聖在圍棋上所展現出來的過人智慧,必能在棋理上觸類旁通。是以我在賽前也作了一些準備,在對局中更是小心翼翼,不敢掉以輕心。
- 許銀川讓去5隻兵和雙士雙相,執紅先行。在XML中,圖檔可以用超連結的形式嵌入,例如:<img src="cchess_pgn.gif">。
- </comment>
- <move> 炮八平五 </move>
- <move> 炮8平5 </move>
- <comment> 以後省略…… </comment>
- <end> 1-0 </end>
- </pgn> 轉自: http://www.xqbase.com/protocol/cchess_pgn.htm
轉載于:https://www.cnblogs.com/yang_sq/archive/2009/12/24/1631396.html