中国象棋电子棋谱PGN格式研究 您所在的位置:网站首页 象棋棋谱读法 中国象棋电子棋谱PGN格式研究

中国象棋电子棋谱PGN格式研究

2023-05-13 16:56| 来源: 网络整理| 查看: 265

正文

PGN(Portable Game Notation)是棋类游戏过程的文件格式,既然国际象棋以这个规范作为记录棋谱的标准,那么对于中国象棋来说,在还没有一个统一标准的今天,PGN无疑是一个好的选择。PGN文件有以下特点:

(1) PGN文件是文本格式的,可以用任何文本编辑软件建立和修改;

(2) PGN文件分为“标签部分”和“着法部分”,两部分都规范整齐,既方便阅读,也便于棋谱编辑软件产生和解读;

(3) 一个PGN文件允许包含多个棋局,形成简易的棋谱数据库;(很少有这么做的,多半是建成CBL格式)

(4) PGN文件的格式是公开的,现在已经被绝大多数棋谱编辑软件所接受(仅指国际象棋,目前还没有可以产生PGN文件的中国象棋软件(这句话已经失效,大部分打谱软件都可以做pgn格式))。

一个正常的PGN格式如下(注释用 ’ 表示,不标注必须存在可以舍弃)

[Game "Chinese Chess"] ’ 必须存在,缺省值Chinese Chess

[Event "赛事"] ’ 文本内对应汉字为对应定义,如有下同

[Site "地点"]

[Date "时间格式如yyyy.mm.dd"] ’ 这里只接受yyyy.mm.dd

[Time "hh:mm:ss"] ’ 这里只接受hh:mm:ss。

[Round "轮次"]

[Red "红方"] ’ 红方名字

[Black "黑方"] ’ 黑方名字

[Result "*"] ’ 此部分详见开局注释,必须存在

[Title "标题"]

[TimeControl "计时"]

[RedElo "红方积分"]

[BlackElo "黑方积分"]

[RedTeam "红方团队"]

[BlackTeam "黑方团队"]

[Annotator "解说者,如蔴球电子"]

[Creator "创建者,如蔴球电子"]

{注释例子,result中*表示未知结果,1/2-1/2表示和棋,1-0表示红方赢,0-1表示黑方赢。} ’ 开局注释

1. 炮八平五 {红方第一步}

马8进7 {黑方第一步}

......(略)

其他格式如Opening、Variation和ECCO:开局名称、变例和ECCO编号,这些都代表开局的信息,FEN表示开始局面,中局、残局和排局等摆出来的局面,作棋谱记录时通常要规定这个选项,Format:表示记谱方法,可以是Chinese(中文纵线格式)、WXF(WXF纵线格式)和ICCS(ICCS坐标格式),默认为Chinese。其他如EventDate、EventSponsor、Section、Stage、Board、Time等; 时限以TimeControl为标签的多种表示,对局结论,以Termination为标签的多种表示。其他,诸如Annotator、Mode、PlyCount等,请参阅《国际象棋译文苑》文摘——关于PGN和FEN记谱规范(上)一文。(这段话中很多格式并非必须存在的,由于原文章过于古老,很多已经弃用)

棋谱规范(有改动)

这部分是PGN的主要内容,记录了每一回合的着法、评注和结果。对于这部分内容的格式,有以下几个规定:

(1) 棋谱部分必须在标签部分的后面,棋谱部分当中不能插入标签;

(2) 每一回合都由“回合数”、“红方着法”和“黑方着法”三部分组成,回合数后面要跟“.”(句点),三者之间用两个分隔符隔开(回合数后面的句点也不例外),回合之间也用分隔符隔开;

(4) 分割符只能是空格、制表符或换行符,一个着法当中不能有分割符(回合数也一样);

(5) 评注用花括号“{}”表示,评注内可以是除花括号以外的任何字符(包括分割符),评注可以插在任何着法的后面,它和着法之间必须用分割符隔开;

(7) 结果以后只能有评注,不能有着法;如果出现标签,则说明这是下一局棋。

8.红方统一用汉字表示数字,黑方统一用全角数字表示数字。(半角数字只是为了方便举例错误写法)

例如,下列PGN文件的片段是允许的:

51. 兵五平六

{红方这一步长将还不足以判负,

但是下一次就要判负了。}

将4平5

52. 兵六平五 将5平4 53. 兵五平六 0-1 {红方长将判负}

又例如,下列PGN文件的片段是不合理的:

51.

兵五平六 将4平5      // 句点后面应该加空格

53. 兵五{再平六就要判负了}平四 // 评注不能把一个着法拆散。

变着用圆括号“()”表示,变着是以棋谱的形式对棋谱的评注,因此括号里的内容本身也是棋谱,里面还可以嵌套评注(用花括号)和变着(用圆括号)。变着针对的是括号前的着法,例如在下面一段棋谱中,变着指的是“炮2进7”改走“炮2平3”:

7. 车六进八 炮2进7 (7. ... 炮2平3 8. 帅五平六 炮3进5 9. 车六进一 将5进1 10. 炮五退二 {黑方不易驾驭局面})

1. 炮八平五 {红方第一步}

马8进7 {黑方第一步} (1. ... 炮8平5 2. 马八进七 马8进7 3. 车九平八 车9进8  {测试例子})

本人的文章参考了以下网站,谢谢!

https://www.xqbase.com/protocol/cchess_pgn.htm

(2004年11月初稿,2006年2月修订,由于某些说明过老,个人注释用中文括号表示)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有