象棋桥 - 中国象棋论坛

首页 » 中国象棋 » 程序开发 » 定义了一种新的棋谱文件格式,将在象棋桥的新版本中使用,大家多提提意见
阿摩 - 2007-12-25 14:26:00


<?xml version="1.0" encoding="GBK" ?>
<ChineseChessRecord>
  <Head>
    <Name>羊城体育《银川棋路》24</Name>
    <URL></URL>
    <Event>民百杯精英赛决赛与吕钦之战</Event>
    <Site>兰州</Site>
    <Date>1995.5.22</Date>
    <Red>吕钦</Red>
    <Black>许银川</Black>
    <Commentator>许银川</Commentator>
    <CommentatorURL></CommentatorURL>
    <Creator></Creator>
    <CreatorURL></CreatorURL>
    <DateCreated />
    <DateModified />
    <Type value="1">实战的全局</Type>
    <Result value="3">和棋</Result>
    <Board value="jmxswsxmj10p5p1b1b1b1b1b18B1B1B1B1B1P5P10JMXSWSXMJ-r1" />
    <Comment><![CDATA[  却说“民百杯”精英赛小组赛已见分晓,师兄吕钦和我脱颖而出,在决赛中不期而遇。这局棋早早就双车尽兑,在马炮残棋中双方各呈精思巧谋,最后化干戈为玉帛。]]></Comment>
  </Head>
  <MoveList>
    <Move nid="1" value="77-47" />
    <Move nid="2" value="10-22" />
    <Move nid="3" value="79-67" />
    <Move nid="4" value="72-52" />
    <Move nid="5" value="66-65">
      <![CDATA[  大军不出小兵先行,师兄意欲将局面导向自已预定的轨道之中。这一次序的调换所带来的差异便是右车或横出或直出可酌情而定。]]>
    </Move>
    <Move nid="6" value="23-24">
      <![CDATA[各活一马是习惯的走法,当然改走马8进7亦可,则红接走兵七进一形成两头蛇阵。]]>
    </Move>
    <Move nid="7" value="19-07" />
    <Move nid="8" value="70-62" />
    <Move nid="9" value="17-27" />
    <Move nid="10" value="20-42" />
    <Move nid="11" value="09-19" />
    <Move nid="12" value="00-10" />
    <Move nid="13" value="19-15">
      <![CDATA[仍不出右车,已有较量残棋之意。如车一平二,则车9进1,另具攻守。]]>
    </Move>
    <Move nid="14" value="80-70" />
    <Move nid="15" value="89-79">
      <![CDATA[ 若车一进一则车8进4,下着兑七路卒阵形非常协调。今兑车虽亏一着,但黑方诸子受位置所限不易开展,故红方仍持先手。]]>
    </Move>
    <Move nid="16" value="70-79" />
    <Move nid="17" value="67-79" />
    <Move nid="18" value="30-41">
      <![CDATA[  先补一手,以便兑车时不致于被红方先手打中卒,这属于一般的走法,在后来举行的“华天杯”精美赛中笔者将之改为炮6退1,似乎颇具弹性。]]>
    </Move>
    <Move nid="19" value="06-05">
      <![CDATA[  若按一般的思维大子先动走马二进三,则兑车之后红边兵被吃且边马受压,另外急于上马还减少了炮五平三的棋,此处细微,不可不察。]]>
    </Move>
    <Move nid="20" value="12-02" />
    <Move nid="21" value="15-10" />
    <Move nid="22" value="22-10" />
    <Move nid="23" value="47-43" />
    <Move nid="24" value="10-22">
      <![CDATA[  双车兑尽,红劫得中卒仍占先手。同样的局面双方已在年初举行的第士五届“五羊杯”冠军赛上较量过,当时笔者应以炮6退1,以下炮五退一,炮6平7,炮七平三,马2进4,马九进八,马4进5,马八进九,炮1进3,相三进五,卒7进1,马二进四,红方稍优。现笔者略作改动以为尝试。看官,这象弈流行已达千年之久,其引人之处便是那不可穷尽的变化。故推陈出新乃棋手天职,纵观古今,胡荣华大师开现代象棋理论之先河,贡献殊大。]]>
    </Move>
    <Move nid="25" value="43-44" />
    <Move nid="26" value="22-34" />
    <Move nid="27" value="27-67">
      <![CDATA[  舍3路卒不取而移师击7路卒,深明局法。若依常规走马二进三,则炮6进5,黑方足可抗衡。]]>
    </Move>
    <Move nid="28" value="34-46" />
    <Move nid="29" value="67-63" />
    <Move nid="30" value="60-82" />
    <Move nid="31" value="69-47" />
    <Move nid="32" value="46-34" />
    <Move nid="33" value="07-15" />
    <Move nid="34" value="34-26">
      <![CDATA[  边马知难而进,暗藏机锋,黑如随手走卒3进1,则马八进九,卒3进1,马九退七,黑虽渡过一卒,但并无攻取目标,红净多一兵,且子力活跃明显占优。]]>
    </Move>
    <Move nid="35" value="15-03" />
    <Move nid="36" value="26-05" />
    <Move nid="37" value="79-67" />
    <Move nid="38" value="05-13" />
    <Move nid="39" value="59-48">
      <![CDATA[  闲庭信步,却尽显清新俊逸的风流。人皆言“吕温侯”勇力无双,殊不知其精细处亦绝。本着红如急于出击走马三进四,则卒3进1,马四进五,马2退4,红方并无收益。]]>
    </Move>
    <Move nid="40" value="24-25" />
    <Move nid="41" value="67-46" />
    <Move nid="42" value="25-35" />
    <Move nid="43" value="46-54" />
    <Move nid="44" value="52-53" />
    <Move nid="45" value="63-13" />
    <Move nid="46" value="62-54" />
    <Move nid="47" value="13-83">
      <![CDATA[  几番兔起鹘落,红方仍持一兵之优。]]>
    </Move>
    <Move nid="48" value="53-13" />
    <Move nid="49" value="65-64" />
    <Move nid="50" value="54-46" />
    <Move nid="51" value="86-85" />
    <Move nid="52" value="46-67" />
    <Move nid="53" value="83-73" />
    <Move nid="54" value="67-55" />
    <Move nid="55" value="64-54" />
    <Move nid="56" value="55-36" />
    <Move nid="57" value="85-84" />
    <Move nid="58" value="82-60" />
    <Move nid="59" value="84-74" />
    <Move nid="60" value="35-45" />
    <Move nid="61" value="44-14" />
    <Move nid="62" value="02-32" />
    <Move nid="63" value="73-33" />
    <Move nid="64" value="41-30" />
    <Move nid="65" value="48-37">
      <![CDATA[  此时双方四炮互缠均不宜轻动,惟黑卧槽马终是心腹大患,故“温侯”不惜弃士而消势。《孙子兵法》云:故善战者,求之于势。说的正是这种情况。]]>
    </Move>
    <Move nid="66" value="36-57" />
    <Move nid="67" value="49-59" />
    <Move nid="68" value="57-78" />
    <Move nid="69" value="59-49" />
    <Move nid="70" value="32-37" />
    <Move nid="71" value="33-73" />
    <Move nid="72" value="78-66" />
    <Move nid="73" value="47-65" />
    <Move nid="74" value="50-41" />
    <Move nid="75" value="54-53">
      <![CDATA[  兑炮虽使局面简化,但战马顿少束缚威力大增,一时红方四子围城,大有“铁骑绕龙城,雪暗凋旗画”的气势。]]>
    </Move>
    <Move nid="76" value="13-73" />
    <Move nid="77" value="74-73" />
    <Move nid="78" value="37-34">
      <![CDATA[  欲求围魏救赵之势,但未免失之弄险,不如改走卒5平6为骑兵腾出退路,方为攻守兼备之善策。]]>
    </Move>
    <Move nid="79" value="39-48" />
    <Move nid="80" value="45-55" />
    <Move nid="81" value="03-22" />
    <Move nid="82" value="34-44" />
    <Move nid="83" value="49-39">
      <![CDATA[  “温侯”御驾稍启避开来势,反观黑方后防将遭受红炮八进四再马七进九的重击,形势极度严峻。更有甚者,第一时限90分钟走满40步刚过,第二时限是15分钟已花去大半,但着数才刚刚开始,这怎不令人惶然呢?]]>
    </Move>
    <Move nid="84" value="42-20" />
    <Move nid="85" value="22-01" />
    <Move nid="86" value="60-42" />
    <Move nid="87" value="53-43" />
    <Move nid="88" value="66-45">
      <![CDATA[  骑兵及时回师,伏击士呼诬陷应中象之着,燃眉之急暂解。]]>
    </Move>
    <Move nid="89" value="65-47" />
    <Move nid="90" value="45-26" />
    <Move nid="91" value="47-25" />
    <Move nid="92" value="26-18" />
    <Move nid="93" value="39-38" />
    <Move nid="94" value="18-26" />
    <Move nid="95" value="38-39" />
    <Move nid="96" value="26-18" />
    <Move nid="97" value="39-38" />
    <Move nid="98" value="55-45" />
    <Move nid="99" value="48-57" />
    <Move nid="100" value="18-26" />
    <Move nid="101" value="38-39" />
    <Move nid="102" value="26-18" />
    <Move nid="103" value="39-38" />
    <Move nid="104" value="40-50">
      <![CDATA[  这段着法“温侯”以上乘的内家手法将黑方攻招一一化解,这匹黑马左冲右突竭尽其能,但遇上了坚韧的“八卦阵”也只得按辔不前,于后方先避一手,所幸借来回叫将之机,步数凑满,时限之急遂解。]]>
    </Move>
    <Move nid="105" value="14-10" />
    <Move nid="106" value="18-26" />
    <Move nid="107" value="38-39" />
    <Move nid="108" value="26-18" />
    <Move nid="109" value="39-38" />
    <Move nid="110" value="44-04" />
    <Move nid="111" value="25-07">
      <![CDATA[  失着,“温侯”为施加时间压力于我,信手一着将攻势断送,应走帅六平五,黑方处境维艰。]]>
    </Move>
    <Move nid="112" value="18-26" />
    <Move nid="113" value="38-39" />
    <Move nid="114" value="04-14" />
    <Move nid="115" value="39-49" />
    <Move nid="116" value="26-34">
      <![CDATA[  如图形势,黑马辗转杀出红阵回师救驾,战云登时消散殆尽。]]>
    </Move>
    <Move nid="117" value="07-25" />
    <Move nid="118" value="14-11" />
    <Move nid="119" value="43-33" />
    <Move nid="120" value="45-46" />
    <Move nid="121" value="57-48" />
    <Move nid="122" value="46-36" />
    <Move nid="123" value="29-47" />
    <Move nid="124" value="36-26" />
    <Move nid="125" value="73-63" />
    <Move nid="126" value="26-36" />
    <Move nid="127" value="01-13" />
    <Move nid="128" value="34-13">
      <![CDATA[  红马炮被困,双兵也无法杀入,遂收兵成和。一场激斗戛然而止,回想局中金戈铁马的场面,不免心潮澎湃。  本局战和,须加赛快棋以决高低,结果师兄胜出,捧走“民百杯”。]]>
    </Move>
  </MoveList>
</ChineseChessRecord>


阿摩 - 2007-12-25 14:28:00


<?xml version="1.0" encoding="GBK" ?>
<ChineseChessRecord>
  <Head>
    <Name>弃双车陷阱</Name>
    <URL></URL>
    <Event></Event>
    <Site></Site>
    <Date>00-12-31</Date>
    <Red></Red>
    <Black></Black>
    <Commentator></Commentator>
    <CommentatorURL></CommentatorURL>
    <Creator>wxl</Creator>
    <CreatorURL></CreatorURL>
    <DateCreated />
    <DateModified />
    <Type value="1">实战的全局</Type>
    <Result value="1">红胜</Result>
    <Board value="jmxswsxmj10p5p1b1b1b1b1b18B1B1B1B1B1P5P10JMXSWSXMJ-r1" />
    <Comment><![CDATA[
]]></Comment>
  </Head>
  <MoveList>
    <Move nid="1" value="77-47" />
    <Move nid="2" value="70-62" />
    <Move nid="3" value="79-67" />
    <Move nid="4" value="80-70" />
    <Move nid="5" value="89-79" />
    <Move nid="6" value="63-64" />
    <Move nid="7" value="79-73" />
    <Move nid="8" value="10-22" />
    <Move nid="9" value="26-25" />
    <Move nid="10" value="72-82" />
    <Move nid="11" value="73-63" />
    <Move nid="12" value="82-81" />
    <Move nid="13" value="19-27" />
    <Move nid="14" value="30-41" />
    <Move nid="15" value="17-07" />
    <Move nid="16" value="00-10" />
    <Move nid="17" value="09-19" />
    <Move nid="18" value="81-61" />
    <Move nid="19" value="63-53" />
    <Move nid="20" value="64-65" />
    <Move nid="21" value="66-65" />
    <Move nid="22" value="62-74" />
    <Move nid="23" value="65-64" />
    <Move nid="24" value="61-67" />
    <Move nid="25" value="47-43" />
    <Move nid="26" value="22-43" />
    <Move nid="27" value="07-67" />
    <Move nid="28" value="74-86" />
    <Move nid="29" value="53-73" />
    <Move nid="30" value="70-80" />
    <Move nid="31" value="73-83" />
    <Move nid="32" value="86-67" />
    <Move nid="33" value="83-80" />
    <Move nid="34" value="43-35" />
    <Move nid="35" value="27-48" />
    <Move nid="36" value="12-42" />
    <Move nid="37" value="29-47" />
    <Move nid="38" value="67-46" />
    <Move nid="39" value="19-10" />
    <Move nid="40" value="46-65" />
    <Move nid="41" value="80-88" />
    <Move nid="42" value="65-57" />
    <Move nid="43" value="88-58" />
    <Move nid="44" value="35-47" />
    <Move nid="19" value="63-53" />
    <Move nid="20" value="64-65" />
    <Move nid="21" value="53-51" />
    <Move nid="22" value="12-11" />
    <Move nid="23" value="19-11" />
    <Move nid="24" value="10-11" />
    <Move nid="25" value="51-61" />
    <Move nid="26" value="62-54" />
    <Move nid="27" value="66-65" />
    <Move nid="28" value="54-33" />
  </MoveList>
</ChineseChessRecord>


阿摩 - 2007-12-25 14:32:00
以后准备用UTF-8编码.
目前用delphi开发的象棋桥2.x版本改unicode比较麻烦,所以先用GBK.
/ChineseChessRecord/Head/Board部分的具体含义过两天写篇帖子解释一下
五味人生 - 2007-12-29 23:12:00
你是盛邑?:-|
阿摩 - 2007-12-29 23:35:00


引用:
原帖由 五味人生 于 2007-12-29 23:12:00 发表
你是盛邑?:-| 


我是盛昱:)
阿摩 - 2007-12-30 8:52:00
说明一下 Board元素中value属性的含义

<Board value="jmxswsxmj10p5p1b1b1b1b1b18B1B1B1B1B1P5P10JMXSWSXMJ-r1" />

value属性中的值是用于定义初始棋盘信息的. 由三部分组成, "-"作为分割符.

分割符前面的为第一部分,用于定义初始布局;
分歌符后面第一个字符定义哪方先行,有"r"和"b"两种可能,"r"代表红方先行,"b"代表黑方先行;
先行方之后到字符串结束或下一个分割符(将来可能扩充,以便加入新的信息)之间的数字,代表当前已经进行到的回合数.

具体介绍一下第一部分:
jmxswsxmj10p5p1b1b1b1b1b18B1B1B1B1B1P5P10JMXSWSXMJ

字符串中的数字换成".",我们可以得到如下字符串
jmxswsxmj..........p.....p.b.b.b.b.b..................B.B.B.B.B.P.....P..........JMXSWSXMJ
该字符串共为90字节, 每9个字符为一组,共10组. 大写字母代表红方棋子, 小写字母代表黑方棋子,"."带表空位;象棋棋盘是9x10的,所以该结构正好和象棋棋盘从上到下一一对应.

字母对应的棋子:
J,j:  红车,黑车
M,m:  红马,黑马
X,x:  红相,黑象
S,s:  红仕,黑士
W,w:  红帅,黑将
P,p:  红炮,黑炮
B,b:  红兵,黑卒

如果字符串为空,代表默认的初始棋盘,红方先行,第一回合,用jmxswsxmj10p5p1b1b1b1b1b18B1B1B1B1B1P5P10JMXSWSXMJ-r1作为默认字符串处理就可以了
阿摩 - 2007-12-30 9:03:00
Head中Type元素定义的是棋局类行,已属性value值为准:
value="0"  未知类型
value="1"  实战全局
value="2"  摆谱全局
value="3"  实战残局
value="4"  摆谱残局

Head中的Result定义结果,同样以属性value值为准.
value="0"  未知
value="1"  红胜/红优
value="2"  黑胜/黑优
value="3"  和棋
阿摩 - 2007-12-30 9:17:00
说明一下变着的定义

在MoveList中的每个Move都带表了一步棋, 属性nid的值代表的是每步棋的序号. 序号的作用就是为了实现变着的存储. 一局不含变着棋谱的序号必然是完全增序的。

如果有局棋的序号如下(行棋用字母暂代):
    1 A
    2 B
    3 C
    4 D
    5 E
    6 F
    4 G
    2 H
    3 I
    4 J
    5 K
可以看到在D处有变着,也就是下完C棋之后有两种行棋方法,为D和G;也可以看到B处也有变着,
下完A棋后有B和H两种下法,上面的序号如果分解为不含变着的棋谱则共有3中,分别为:
ABCDEF
ABCG
AHIJK

如果要写一个只读取主着的程序,那只要碰到下一个序号不比当前序号大,就可以认为已经读完主着了.
阿摩 - 2007-12-30 9:27:00
该文件完全按照xml标准定义,所以开发的时候用通用的xml解析器就可以很方便的读取了.
文件的扩展名定为 .CBF

和CBL棋库完全对应的 .CBX结构已经定义完成.过两天就放出. 相当于把多个.CBF文件并到一个.CBX文件中
阿摩 - 2007-12-30 9:31:00
最新修订的.CBF结构在Head中又加入6个元素,分别是
<Round>哪一轮</Round>
<TimeRule>用时规则</TimeRule>
<RedTeam>红方所属队名</RedTeam>
<RedTime>红方用时</RedTime>
<BlackTeam>黑方所属队名</BlackTeam>
<BlackTime>黑方用时</BlackTime>
五味人生 - 2007-12-30 19:13:00
很早就见你大名了,你用Delphi做的象棋桥不错,于是我也学了Delphi。呵呵。你可算是我的偶像哟!
交一个朋友吧,我的QQ 11231221
网站http://5vrs.cn
阿摩 - 2007-12-30 22:03:00


引用:
原帖由 五味人生 于 2007-12-30 19:13:00 发表
很早就见你大名了,你用Delphi做的象棋桥不错,于是我也学了Delphi。呵呵。你可算是我的偶像哟!
交一个朋友吧,我的QQ 11231221
网站http://5vrs.cn


你好,已加你QQ
五味人生 - 2007-12-30 22:50:00
呵呵,大家好好,才是真的好!
弈聪 - 2008-1-18 18:04:00
以前好象在金华,现在不知是否还在老地方.
mnfac - 2008-1-23 15:48:00
比较喜欢GBK的啊
飞龙天舞 - 2008-1-29 16:09:00
期待中........
msnmgqsyh - 2008-3-25 22:33:00
:strong:
greatpa - 2008-6-28 5:51:00
这两天我试用了一下新版的象棋桥3,感觉很不错,界面大方,使用更方便了,特别是支持了xqf格式,和文件夹方式浏览。
        这真是我们棋友的福音,在此衷心感谢作者盛昱,是你的辛苦劳动换来了我们大家的便利。
        在这象棋桥3.0完善之际,特提个小小建议,关于PGN格式(象棋巫师的那种)转换,一个一个点转换太麻烦了,能否将cbr格式批量转化为PGN格式。谢谢关注!
阿摩 - 2008-6-28 6:35:00


引用:
原帖由 greatpa 于 2008-6-28 5:51:00 发表
        这两天我试用了一下新版的象棋桥3,感觉很不错,界面大方,使用更方便了,特别是支持了xqf格式,和文件夹方式浏览。
        这真是我们棋友的福音,在此衷心感谢作者盛昱,是你的辛苦劳动换来了我们大家的便利。
        在这象棋桥3.0完善之际,特提个小小建议,关于PGN格式(象棋巫师的那种)转换,一个一个点转换太麻烦了,能否将cbr格式批量转化为PGN格式。谢谢关注!


大家喜欢象棋桥是我最开心的:-D
有批量转换为PGN格式的功能,在棋谱管理页的棋谱列表里选中一批棋谱,然后点鼠标右键就可看到.
弈聪 - 2008-6-28 12:29:00
新的棋库版的格式会变吗??.
阿摩 - 2008-6-30 22:02:00


引用:
原帖由 弈聪 于 2008-6-28 12:29:00 发表
新的棋库版的格式会变吗??.


格式会改变,不过还是用CBL扩展名,2.x版的CBL也继续支持.

新的CBL格式准备采用空间换时间策略,会有比较大的冗余,但速度会比2.x版的CBL有很大提高.
1
查看完整版本: 定义了一种新的棋谱文件格式,将在象棋桥的新版本中使用,大家多提提意见