-
一、
FEN
的优势
FEN(Forsyth-Edwards Notation)是专门用来表示象棋局面的记录规范,在这个规范下,一个局面可以简单地用一行“
FEN格式串”来表示,而不必烦琐地说:“红帅在四路次底线,黑将在5路底线……”。由于它是文本格式的
(只牵涉到很有限的几个字母、数字和符号
),因此网上传递棋局就非常方便,不用把棋图画在纸上或用文字笨拙地描述了,而是用棋谱编辑软件摆好局面,自动得到
FEN格式串,再贴到诸如
Web网页、
BBS、电子论坛等能够传递文字的网络应用平台上。读者面对
FEN格式传,只要借助于棋谱编辑软件,用“赋值”和“粘贴”就可以完全重现局面,使得棋谱交流快速而高效。
二、
FEN
格式串
国际象棋的
FEN格式串是由
6段
ASCII字符串组成的代码
(彼此
5个空格隔开
),这
6段代码的意义依次是:
(1) 棋盘上的棋子,这是
FEN格式串的主要部分;
(2) 轮到哪一方走子;
(3) 每方及该方的王翼和后翼是否还存在“王车易位”的可能;
(4) 是否存在吃过路兵的可能,过路兵是经过哪个格子的;
(5) 最近一次吃子或者进兵后棋局进行的步数
(半回合数
),用来判断“
50回合自然限着”;
(6) 棋局的回合数。
中国象棋没有“王车易位”和“吃过路兵”的着法,所以
FEN格式串的这两项空缺,以最初局面为例说明:
- rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1 (1) 红色区域,表示棋盘布局,小写表示黑方,大写表示红方,其他规则同国际象棋的 FEN规范 (请参阅《 国际象棋译文苑》文摘—— 关于PGN和FEN记谱规范(下)一文 )。这里要注意两点,一是中国象棋棋盘有 10行,所以要用 9个“ /”把每一行隔开;二是棋子名称用英文字母表示,国际象棋中没有的棋子是仕 (士 )和炮,这里分别用字母 A(a)和 C(c)表示。 (2) 绿色区域,表示轮到哪一方走子,“ w”表示红方,“ b”表示黑方。 (有人认为红方应该用“ r”表示,很多象棋软件确实是这样表示的。 ElephantBoard尽管用“ w”表示,但识别时采取灵活的办法,即“ b”表示黑方,除此以外都表示红方。 ) (3) 深紫色区域,空缺,始终用“ -”表示。 (4) 紫红色区域,空缺,始终用“ -”表示。 (5) 蓝色区域,表示双方没有吃子的走棋步数 (半回合数 ),通常该值达到 120就要判和 (六十回合自然限着 ),一旦形成局面的上一步是吃子,这里就标记“ 0”。 (这个参数对于普通局面的意义不大, ElephantBoard的规则处理器并不是根据这一项来判断和棋的,所以总是计为“ 0”。 ) (6) 棕色区域,表示当前的回合数,在研究中局或排局时,作为研究对象的局面,这一项可以写 1,随着局势的发展逐渐增加。 三、 FEN 文件 FEN格式串有很多载体,通常的做法是把它保存成后缀为“ .FEN”的文件。 FEN文件是 ASCII码文件,可以用任何文本编辑软件来建立和修改,也可以通过象棋棋谱软件来产生。 四、历史局面的表示
|
ElephantBoard向引擎传递局面时,<fen_string>总是最近一次吃过子的局面(或开始局面),后面所有的着法都用moves选项来传递给引擎,这样就包含了判断自然限着和长打的历史信息,这些信息可由引擎来处理。
转自:http://www.elephantbase.net/protocol/cchess_fen.htm