PGN是用來(lái)儲(chǔ)存對(duì)局的丹莲,除此之外為了適應(yīng)國(guó)際象棋其它相關(guān)要求昼汗,還有其它的數(shù)據(jù)表示標(biāo)準(zhǔn)笔喉,最重要的兩個(gè)是FEN和EPD 取视。這里主要說(shuō)說(shuō)FEN的格式。
FEN
FEN就是“福斯夫-愛(ài)德華茲記號(hào)法”(Forsyth-Edwards Notation)常挚,這是一種使用ASCII碼字符描述國(guó)際象棋局面的標(biāo)準(zhǔn)作谭。FEN是建立在19世紀(jì)由報(bào)社記者S·D·福斯夫設(shè)計(jì)的記錄局面的標(biāo)準(zhǔn)基礎(chǔ)上的。后來(lái)為了適合象棋軟件的需要奄毡,由愛(ài)德華茲對(duì)此做了少許修改折欠。一份標(biāo)準(zhǔn)的局面記號(hào)對(duì)需要大量交換共享局面數(shù)據(jù)的國(guó)際象棋程序設(shè)計(jì)等工作具有尤其重要的作用。
結(jié)構(gòu)描述
一個(gè)FEN記錄使用長(zhǎng)度可不同的一行來(lái)表示吼过,由六個(gè)區(qū)域組成锐秦。單純的FEN記錄文件后綴應(yīng)該是“.fen”,比如:kk-1.fen盗忱。
FEN描述了:棋子位置酱床、輪走棋方、易位可行性售淡、吃過(guò)路兵目標(biāo)格斤葱、半步計(jì)數(shù)、以及總回合數(shù)揖闸。所有這一切用一行文字符號(hào)表示就行了而且非常容易讀揍堕。
看看一個(gè)FEN的六個(gè)區(qū)域及其含義,先舉一個(gè)誰(shuí)都太熟悉了的局面的FEN文件:
rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1
這就是每盤常規(guī)對(duì)局的最初局面汤纸,一個(gè)子都沒(méi)有動(dòng)衩茸。
譯文以不同顏色表示了這個(gè)FEN中的六個(gè)不同區(qū)域,它們是:
- 棋子位置數(shù)值區(qū)域(Piece placement data) 【rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR】
就是表示雙方棋子各在棋盤哪個(gè)格子上的贮泞。規(guī)則是從第8橫線開(kāi)始順次數(shù)到第1橫線(白方在下楞慈,從上數(shù)到下),從a線開(kāi)始順次數(shù)到h線啃擦;白方棋子以大寫字母“PNBRQK”表示囊蓝,黑方棋子以小寫“pnbrqk”表示,這是英文表示法令蛉,每個(gè)字母代表的意義與常規(guī)規(guī)定相同聚霜。數(shù)字代表一個(gè)橫線上的連續(xù)空格狡恬,反斜杠“/” 表示結(jié)束一個(gè)橫線的描述。
上面的那pppppppp蝎宇,就是表示黑方在第7橫線上排有8只兵弟劲;后面那4個(gè)數(shù)字8,就是表示從第6到第3橫線姥芥,雙方一個(gè)棋子都不在兔乞,是空格;7個(gè)反斜杠“/”將第一區(qū)域分成8段凉唐,因?yàn)槠灞P有8條橫線庸追;其它的照著圖完全可以類推。 - 輪走棋方(Active color) 【w】
表示目前局面該誰(shuí)走棋熊榛。小寫“w”表示白方走棋锚国;小寫“b”表示黑方走棋; 顯然起初局面肯定是白先玄坦,所以上面就是“w” 血筑。 - 易位可行性(Castling availability) 【KQkq】
這表示在當(dāng)前局面下每一方有沒(méi)有潛在的各種王車易位的可行性(目前不一定行,但以后有可能行)煎楣。如果誰(shuí)都沒(méi)有豺总,就用“-”表示;大寫“K”表示白方有短易位的可行性择懂,大寫“Q”表示白方有長(zhǎng)易位的可行性喻喳;對(duì)應(yīng)的小寫“k”和“q”代表黑方短和長(zhǎng)易位的可行性。書(shū)寫順序必須是先大寫后小寫困曙、先短易位后長(zhǎng)易位表伦,并且之間不能有空格。 - 吃過(guò)路兵目標(biāo)格(En passant target square) 【-】
如果沒(méi)有慷丽,就用“-”表示蹦哼。如果有,就用具體完成吃過(guò)路兵的那個(gè)格子坐標(biāo)來(lái)表示要糊,顯然對(duì)于白兵被吃只可能在第3橫線纲熏,對(duì)于黑兵被吃只可能在第6橫線。而且锄俄,這個(gè)標(biāo)記是且只是在該局面緊接的上一步棋是某方剛走兵推進(jìn)兩格的情況下出現(xiàn)局劲。 - 半回合計(jì)數(shù)(Halfmove clock) 【0】
用一個(gè)非負(fù)數(shù)表示自從上一次動(dòng)兵或吃子之后目前走了的半回合數(shù)。這個(gè)是為了適應(yīng)50步和棋規(guī)則而定奶赠∮闾睿【譯注:但是在winboard的FEN輸出中,這個(gè)值好象總是0】 - 回合數(shù)(Fullmove number) 【1】
當(dāng)前要進(jìn)行到的回合數(shù)毅戈。不管白還是黑苹丸,第一步時(shí)總是以1表示塑猖,以后黑方每走一步數(shù)字就加1。
舉例
假如從開(kāi)局開(kāi)始谈跛,走了1. e4 e5 2. Nf3 Nc6 3. Bc4 Nf6 4. Ng5 d5 5. exd5 Nxd5 6. Nxf7 Kxf7 7. Qf3+ Qf6 8. Bxd5+ Be6 9. Bxc6 bxc6 10. Qxc6 Bd6 11. Nc3 Rhd8 這個(gè)寫成FEN就是r2r4/p1p2kpp/2Qbbq2/4p3/8/2N5/PPPP1PPP/R1B1K2R w KQ - 0 12
- 第一區(qū)域
第8橫線r2r4,全是黑子(小寫)塑陵,從左到右依次是:黑車r感憾、2個(gè)連續(xù)空格、黑車r令花、然后4個(gè)連續(xù)空格阻桅,這橫線8個(gè)格子都說(shuō)明了;
第1橫線R1B1K2R兼都,全是白子(大寫)嫂沉,從左到右依次是:白車R、1個(gè)空格扮碧、白象B趟章、1個(gè)空格、白王K慎王、兩個(gè)空格蚓土、白車R,剛好8個(gè)格子赖淤;
其它類推蜀漆,要說(shuō)明的是第6橫線和第4橫線
第6橫線就是2Qbbq2,從左到右依次是:2個(gè)空格咱旱、白后Q(注意這是大寫确丢!)、黑象b吐限、黑象b鲜侥、黑后q、2個(gè)空格毯盈,剛好8個(gè)剃毒;第4橫線,空空如也搂赋,所以就是用“8”表示赘阀,表示8個(gè)連續(xù)空格。 - 第二區(qū)域
因?yàn)檫@時(shí)輪到白方走棋脑奠,所以就是“w”基公。 - 第三區(qū)域
黑方的王已經(jīng)動(dòng)過(guò)所以失去易位可行性;白方的王則可以宋欺,以“KQ”表示轰豆。 - 第四區(qū)域
上一著沒(méi)有兵推進(jìn)兩格胰伍,所以不存在吃過(guò)路兵目標(biāo)格,用“-”表示酸休。 - 第五區(qū)域
WinBoard總是輸出“0” ……不過(guò)這個(gè)標(biāo)記作用有限骂租。 - 第六區(qū)域
黑方已走完第11回合,所以現(xiàn)在是第12回合斑司。
使用打譜軟件比如winboard或chessbase渗饮,無(wú)論輸入還是輸出FEN記錄和文件都是自動(dòng)式的,很方便宿刮,了解它的規(guī)則只是為了深入一些應(yīng)用或遇到問(wèn)題時(shí)自己可以解決互站。另外,在網(wǎng)上之間傳遞棋局僵缺,不用把棋圖畫(huà)在紙上或用文字笨拙地描述了胡桃,不用說(shuō)“王在e1, 后在XX,……”等等磕潮。寫成FEN格式翠胰,或者干脆使用winboard等直接輸出FEN文件,然后發(fā)過(guò)去甚至讓對(duì)方直接“粘貼-復(fù)制-再粘貼”揉抵,幾秒鐘對(duì)方就可以完全重現(xiàn)該局面