棋类游戏
国际象棋记谱法棋谱格式

一盘棋怎么变成一个文件:国际象棋的记谱符号与 PGN 格式

2026/10/70 次浏览元游棋牌

代数记谱法用字母和数字给每个格子一个唯一名字,PGN 则用纯文本把整盘棋连同赛事信息一起存下来,成为棋界通用的交换格式。

先给每个格子一个名字

现代国际象棋使用代数记谱法。棋盘上每一格都有一个唯一名称:横线用数字 1 到 8,竖线用小写字母 a 到 h,左下角(从白方视角)是 a1,右上角是 h8。

棋子用大写字母表示:K 王、Q 后、R 车、B 象、N 马。兵不写字母,只写目标格。

一个需要注意的细节是大小写承担了区分功能:大写 B 是象,小写 b 是 b 线的兵。「Bb5」是象走到 b5,「b5」是兵走到 b5,「bxc5」是 b 线兵吃掉 c5。混用大小写是最容易在记谱纸上暴露新手身份的错误。

马之所以是 N 而不是 K,是因为 K 已经被王占用,于是取了 kNight 的第二个字母。

几类特殊着法怎么写

  • 吃子:在目标格前加 x,如 Nxe5;
  • 兵吃子:必须写出兵所在的竖线,如 exd5,而不是只写 xd5——因为可能有两个兵都能吃到同一格;
  • 王车易位:短易位记 O-O,长易位记 O-O-O;
  • 将军:目标格后加 +;
  • 将杀:加 #,而不是 +;
  • 升变:在着法后加 =Q 等,如 e8=Q;
  • 消歧:两个同类棋子都能走到同一格时,补上起始竖线或横线,如马在 b 线和 d 线都能到 d7 时写作 Nbd7,两车在同一竖线时写作 R1a3。

PGN:把整盘棋存成纯文本

PGN(Portable Game Notation,可移植式棋局记号法)由 Steven J. Edwards 在 1993 年前后提出,随后在 Usenet 新闻组 rec.games.chess 上被广泛采用和推广。

它的设计目标写得很直白:让人容易读写,让电脑容易解析和生成。因此 PGN 采用了纯 ASCII 文本格式,用任何文本编辑器都能打开,扩展名是 .pgn。

一局 PGN 的两段结构

第一段是标签对部分,写在方括号里。归档用的导出格式要求必须有七个标签,且按顺序排列,这组被称为 Seven Tag Roster:

  • Event(赛事名称)
  • Site(地点,格式为「城市, 地区 国家」)
  • Date(日期,格式 YYYY.MM.DD,未知部分可用 ? 代替)
  • Round(轮次)
  • White(白方,格式「姓, 名」)
  • Black(黑方)
  • Result(结果)

七个之外还可以加很多补充标签:WhiteElo、BlackElo、ECO(开局编码)、TimeControl(时限)、FEN 与 SetUp(用于非初始局面)等。

第二段是着法部分,用标准代数记谱法记录每一步,以结果标记结尾。结果只有四种写法:1-0(白胜)、0-1(黑胜)、1/2-1/2(和棋)、*(未知或对局未结束)。

注释写在花括号 {} 里,变着写在圆括号 () 里并可以嵌套,评注还可以用数值注解符号(NAG),如 $1、$2。

与 FEN 的分工

容易混淆的一点是 PGN 与 FEN 的边界:FEN 编码一个静态局面,PGN 编码整盘对局。FEN 只描述某一瞬间棋盘上棋子在哪、轮谁走、易位与吃过路兵权利、步数计数;PGN 记录从第一步到最后一步的完整序列,外加元数据。

两者常搭配使用:FEN 给出特殊起始局面(如残局练习、Chess960),PGN 记录从那个局面开始的着法。

为什么这个 1993 年的格式还在用

PGN 有几个特性让它活到了今天:纯文本、开放非专有、规范公开、一个文件可以容纳成千上万局棋而首尾相接。今天从 Lichess 导出的 PGN,依然能被几十年前写的棋谱软件读出来。

几乎所有国际象棋引擎、在线平台与数据库都支持 PGN 读写,它实际上是棋界的数据交换通用语。中国象棋软件同样支持 PGN,用于棋谱的导出与阅读。

手写记谱纸时的几个坑

  • 把 e4 写成 E4——格子的字母永远是小写;
  • 兵吃子忘记写来源竖线;
  • 把将杀 # 写成将军 +;
  • 两个同类棋子都能到位时没有消歧;
  • 把马写成 K。

一盘棋从棋盘上走完,到最后变成一行行可以被机器读懂的文字,中间靠的就是这套符号。它不复杂,但每个符号都有它存在的理由——而理由几乎都指向同一件事:不能产生歧义。

返回棋类游戏
国际象棋,记谱法,棋谱格式

相关推荐