中国象棋FEN局面表示

简述

FEN (Forsyth-Edwards Notation) 是专门用来表示象棋局面的记录规范,在这个规范下,一个局面可以简单地用一行“FEN格式串”来表示。

FEN 由有限的几个字母、数字和符号组成一个字符串,便于传递棋局局面信息。  

FEN 格式规约

FEN 局面表示来源于国际象棋,在中国象棋的 FEN 局面记录中延续了国际象棋的规则,另有一些变通。

国际象棋的 FEN 串由 6 段 ASCII 字符组成,彼此间则空格隔开,各段所表示的意义如下:

  1. 棋盘上棋子位置分布;

  2. 轮到哪方走子;

  3. 王车易位可能;

    1. 关于中国象棋记谱的规范在中国象棋游戏规范的「记谱方法」一篇有详细说明。
  4. 无吃子或进兵步数;

  5. 棋局总回合数;

中国象棋有自己的一些特色,所以 FEN 串应用于中国象棋时作了以下的变通:

  • 中国象棋无「王车易位」和「吃过路兵」着法,FEN 串的第 3、4 空缺;
  • 国际象棋棋子颜色分「白、黑」,中国象棋棋子颜色分「红、黑」,实际应用中用「w」代表中国象棋的红方;

我们以最中国象棋的初始局面为例说明 FEN 串的结构:

rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w - - 0 1
		

上边的串符合前述的 FEN 的 6 段表示规则,各段之间用空间分隔:

  1. 第一段:rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR 表示棋盘上的棋子布局:
  2. 中国象棋棋盘有 10 行,所以用9个「/」把每一行隔开;
  3. 棋子名用字母表示,小写表示黑方,大写表示红方
    • 车:R/r
    • 马:N/n
    • 相/象:B/b
    • 仕/士:A/a
    • 将/帅:K/k
    • 炮/砲:C/c
    • 兵/卒:P/p
  4. 第二段:w 表示轮到哪一方走子,「w」表示红方,「b」表示黑方;
  5. 第三段:始终用「-」表示;
  6. 第四段,始终用「-」表示;
  7. 第五段,表示无吃子步数,通常该值达到120 就要判和 — 六十回合自然限着
  8. 第六段,表示总回合数,两步为一回合

FEN文件

FEN 文件它是象棋局面传递的一个有效方式;将一个代表当前局面的 FEN 串以文本文件的方式保存,通常后缀为「.FEN」,这就形成了一个 FEN 文件。

{% page-ref page="fen-ju-mian-biao-shi.md" %}