中國象棋電腦PGN文件格式
在中國,已有幾千年歷史、充滿東方智慧的象棋在中國的群眾基礎(chǔ)遠(yuǎn)遠(yuǎn)超過圍棋,一直是普及最廣的棋類項(xiàng)目。下面學(xué)習(xí)啦小編給你介紹中國象棋電腦PGN文件格式,歡迎閱讀。
中國象棋電腦PGN文件格式一、概述
PGN(Portable Game Notation)是棋類游戲過程的文件格式,既然國際象棋以這個規(guī)范作為記錄棋譜的標(biāo)準(zhǔn),那么對于中國象棋來說,在還沒有一個統(tǒng)一標(biāo)準(zhǔn)的今天,PGN無疑是一個好的選擇。PGN文件有以下特點(diǎn):
(1) PGN文件是文本格式的,可以用任何文本編輯軟件建立和修改;
(2) PGN文件分為“標(biāo)簽部分”和“著法部分”,兩部分都規(guī)范整齊,既方便閱讀,也便于棋譜編輯軟件產(chǎn)生和解讀;
(3) 一個PGN文件允許包含多個棋局,形成簡易的棋譜數(shù)據(jù)庫;
(4) PGN文件的格式是公開的,現(xiàn)在已經(jīng)被絕大多數(shù)棋譜編輯軟件所接受(僅指國際象棋,目前還沒有可以產(chǎn)生PGN文件的中國象棋軟件)。
中國象棋電腦PGN文件格式二、標(biāo)簽部分
PGN的標(biāo)簽都是由方括號“[]”表示的內(nèi)容,每個標(biāo)簽占一行,它們反映了棋局的一些基本情況。中國象棋的PGN記譜規(guī)范同國際象棋類似,基本標(biāo)簽有:
(0) Game:游戲類型,國際象棋沒有這個標(biāo)簽,中國象棋的PGN文件中這個標(biāo)簽必須放在第一位,其值必須為“Chinese Chess”;
(1) Event:比賽名;
(2) Site:比賽地點(diǎn);
(3) Date:比賽日期,格式統(tǒng)一為“yyyy.mm.dd”;
(4) Round:比賽輪次;
(5) Red:紅方棋手,不同與國際象棋的White;
(6) Black:黑方棋手;
(7) Result:比賽結(jié)果,“紅先勝”用“1-0”表示,“黑先勝”用“0-1”表示,和棋用“1/2-1/2”表示,未知用“*”表示。
另外還要增加具有中國象棋比賽特點(diǎn)的信息:
(8) RedTeam和BlackTeam:這是棋手所屬的代表隊(duì)(俱樂部、棋協(xié)、省份或國家),它們通常寫在Red和Black標(biāo)簽的前面;
(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:開始局面,中局、殘局和排局等擺出來的局面,作棋譜記錄時(shí)通常要規(guī)定這個選項(xiàng);
(11) Format:表示記譜方法,可以是Chinese(中文縱線格式)、WXF(WXF縱線格式)和ICCS(ICCS坐標(biāo)格式),默認(rèn)為Chinese。
以下信息可以作為標(biāo)簽存在,也可以寫在注釋中:
(1) 棋手相關(guān)信息:紅方有RedTitle、RedElo、RedNA(這項(xiàng)通常會被RedTeam所取代)、RedType等,黑方寫法雷同;
(2) 賽事相關(guān)信息:EventDate、EventSponsor、Section、Stage、Board、Time等;
(3) 時(shí)限:以TimeControl為標(biāo)簽的多種表示。
(4) 對局結(jié)論,以Termination為標(biāo)簽的多種表示。
(5) 其他,諸如Annotator、Mode、PlyCount等,請參閱《國際象棋譯文苑》文摘——關(guān)于PGN和FEN記譜規(guī)范(上)一文。
中國象棋電腦PGN文件格式三、棋譜部分
這部分是PGN的主要內(nèi)容,記錄了每一回合的著法、評注和結(jié)果。對于這部分內(nèi)容的格式,有以下幾個規(guī)定:
(1) 棋譜部分必須在標(biāo)簽部分的后面,棋譜部分當(dāng)中不能插入標(biāo)簽;
(2) 每一回合都由“回合數(shù)”、“紅方著法”和“黑方著法”三部分組成,回合數(shù)后面要跟“.”(句點(diǎn)),三者之間用兩個分隔符隔開(回合數(shù)后面的句點(diǎn)也不例外),回合之間也用分隔符隔開;
(3) 著法的表示必須和Format標(biāo)簽相統(tǒng)一,如果沒有Format標(biāo)簽,則用中文縱線格式來表示;
(4) 分割符只能是空格、制表符或換行符,一個著法當(dāng)中不能有分割符(回合數(shù)也一樣);
(5) 評注用花括號“{}”表示,評注內(nèi)可以是除花括號以外的任何字符(包括分割符),評注可以插在任何著法的后面,它和著法之間必須用分割符隔開;
(6) 整個棋局結(jié)束時(shí)必須用“1-0”(紅方勝)、“0-1”(黑方勝)、“1/2-1/2”(和棋)或“*”(未知)表示結(jié)果,結(jié)果和著法之間必須用分割符隔開;
(7) 結(jié)果以后只能有評注,不能有著法;如果出現(xiàn)標(biāo)簽,則說明這是下一局棋。
例如,下列PGN文件的片段是允許的:
51. 兵五平六
{紅方這一步長將還不足以判負(fù),
但是下一次就要判負(fù)了。}
將4平5
52. 兵六平五 將5平4 53. 兵五平六 0-1 {紅方長將判負(fù)}
又例如,下列PGN文件的片段是不合理的:
51.兵五平六 將4平5 // 句點(diǎn)后面應(yīng)該加分割符
[Format "WXF"] 52. P6.5 K5.4 // 棋譜部分不能含有標(biāo)簽
53. 兵五{再平六就要判負(fù)了}平四 // 評注不能把一個著法拆散
中國象棋電腦PGN文件格式四、舉例
下面是一個很經(jīng)典的例子,這個例子能很好地反映中國象棋PGN格式的特點(diǎn):
[Game "Chinese Chess"]
[Event "許銀川讓九子對聶棋圣"]
[Site "廣州"]
[Date "1999.12.09"]
[Red "許銀川"]
[Black "聶衛(wèi)平"]
[Result "1-0"]
[FEN "rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/9/1C5C1/9/RN2K2NR r - - 0 1"]
{ 評注:許銀川
象棋讓九子原屬茶余飯后的娛樂,不意今日卻被擺上賽桌,更為離奇的是:我的對手竟是在圍棋棋壇上叱咤風(fēng)云的聶大帥。賽前我并不了解對手的實(shí)力,但相信以聶棋圣在圍棋上所體現(xiàn)出來的過人智慧,必能在棋理上觸類旁通。因此我在賽前也作了一些準(zhǔn)備,在對局中更是小心翼翼,不敢掉以輕心。
許銀川讓去5只兵和雙士雙相,執(zhí)紅先行。棋盤如右圖所示。當(dāng)然,PGN文件里是無法嵌入圖片的。}
1. 炮八平五 炮8平5
{ 紅方首著架中炮必走之著,聶棋圣還架中炮拼兌子力,戰(zhàn)術(shù)對頭。}
2. 炮五進(jìn)五 象7進(jìn)5 3. 炮二平五
{ 再架中炮也屬正著,如改走馬八進(jìn)七,則象5退7,紅方帥府受攻,當(dāng)然若紅方仍再架中炮拼兌,那么失去雙炮就難有作用了。}
馬8進(jìn)7 4. 馬二進(jìn)三 車9平8 5. 馬八進(jìn)七 馬2進(jìn)1 6. 車九平六 車1平2
{ 聶棋圣仍按常規(guī)戰(zhàn)法出動主力,卻忽略了紅方車塞象眼的兇著,應(yīng)走車1進(jìn)1。}
7. 車六進(jìn)八
{ 紅車疾點(diǎn)象眼,局勢霎時(shí)有劍拔弩張之感。這種對弈不能以常理揣度,紅方只能像程咬金的三板斧一般猛攻一輪,若黑方防守得法則勝負(fù)立判。}
炮2進(jìn)7
{ 卻說聶棋圣見我來勢洶洶,神色頓時(shí)頗為凝重,一番思索之后沉下底炮以攻為守,果是身手不凡。此著如改走炮2平3,則帥五平六,炮3進(jìn)5,車六進(jìn)一,將5進(jìn)1,炮五退二,黑方不易駕馭局面。}
8. 車一進(jìn)四 炮2平1 9. 馬七進(jìn)八 炮1退4 10. 馬八退七 炮1進(jìn)4 11. 馬七進(jìn)八 車2進(jìn)2
{ 其實(shí)黑方仍可走炮1退4,紅方若續(xù)走馬八退七,則仍炮1進(jìn)4不變作和,因黑右車叫將紅可車六退九,故不算犯規(guī)。}
12. 炮五平八 炮1退4
{ 劣著,導(dǎo)致失子,應(yīng)走車2平3,紅方如馬八進(jìn)六,則車3退1,紅方無從著手。但有一點(diǎn)必須注意,黑車躲進(jìn)暗道似與棋理相悖,故聶棋圣棄子以求局勢緩和情有可原。}
13. 炮八進(jìn)五 炮1平9 14. 炮八平三 車8進(jìn)2 15. 炮三進(jìn)一 車8進(jìn)2 16. 馬八進(jìn)六 炮9平5
17. 炮三平一 士6進(jìn)5 18. 馬六進(jìn)四 車8平5 19. 帥五平六
{ 可直接走馬四進(jìn)三叫將再踩中象。}
車5平6 20. 馬四進(jìn)三 將5平6 21. 車六退四 卒5進(jìn)1 22. 車六進(jìn)二 炮5平7
23. 前馬退二 象5進(jìn)7 24. 馬二退三 卒5進(jìn)1 25. 車六平三 卒5平6 26. 車三進(jìn)三 將6進(jìn)1
27. 后馬進(jìn)二 士5進(jìn)6 28. 馬二進(jìn)三 將6平5 29. 前馬進(jìn)二
{ 紅方有些拖沓,應(yīng)直接走車三平六立成絕殺。}
將5進(jìn)1 30. 車三平六 士6退5 31. 馬二退三 車6退1 32. 車六退三
{ 再擒一車,以下著法僅是聊盡人事而已。}
車6平7 33. 車六平三 卒6平7 34. 車三平五 將5平6 35. 帥六平五 將6退1
36. 車五進(jìn)二 將6退1 37. 車五進(jìn)一 將6進(jìn)1 38. 車五平七
{ 至此,聶棋圣認(rèn)負(fù)。與此同時(shí),另一盤圍棋對弈我被屠去一條大龍,已無力再戰(zhàn),遂平分秋色,皆大歡喜。}
1-0
中國象棋電腦PGN文件格式五、變著
變著用圓括號“()”表示,變著是以棋譜的形式對棋譜的評注,因此括號里的內(nèi)容本身也是棋譜,里面還可以嵌套評注(用花括號)和變著(用圓括號)。變著針對的是括號前的著法,例如在下面一段棋譜中,變著指的是“炮2進(jìn)7”改走“炮2平3”:
7. 車六進(jìn)八 炮2進(jìn)7 (7. ... 炮2平3 8. 帥五平六 炮3進(jìn)5 9. 車六進(jìn)一 將5進(jìn)1 10. 炮五退二 {黑方不易駕馭局面})
中國象棋電腦PGN文件格式六、PGN與XML
如今網(wǎng)絡(luò)技術(shù)發(fā)展飛快,棋譜要能發(fā)布在互聯(lián)網(wǎng)上,需要一種容易被互聯(lián)網(wǎng)應(yīng)用程序所識別的格式,XML無疑是一種好的選擇。由于PGN的標(biāo)簽和XML的容器具有類似之處,所以PGN和XML的轉(zhuǎn)換非常方便。目前XML的棋譜規(guī)范尚未形成,但是只要照搬PGN格式的內(nèi)容,就不難形成一個公認(rèn)的XML格式。例如,上面一個實(shí)例轉(zhuǎn)化為XML格式的文本,就可以是以下形式:
Chinese Chess
許銀川讓九子對聶棋圣
廣州
1999.12.09
許銀川
聶衛(wèi)平
1-0
rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/9/1C5C1/9/RN2K2NR r - - 0 1
炮八平五 炮8平5
1-0
看了“中國象棋電腦PGN文件格式 ”的人還看了: