谁能帮我讲一下……Rena棋谱的编码格式?
#1 谁能帮我讲一下……Rena棋谱的编码格式? 作者:蚩尤血族 发表时间:2012-9-11 12:27:34
由于我现在正在写一个程序,需要有读棋谱的功能。现在,什么00,40,80,c0,各种关于分支的我都搞明白了,但是注释、棋盘标记什么的还没有完全搞懂,自己看了半天也没有头绪,哪位朋友可以帮我讲一下,多谢了……[此帖子已被 蚩尤血族 在 2012-9-11 12:28:41 编辑过]
#2 Re:谁能帮我讲一下……Rena棋谱的编码格式? 作者:潇洒 发表时间:2012-9-12 15:05:20
单讲棋谱格式。Rena棋谱是二进制存储。
以下用16制表示。
比如11代表一个Byte字节=1*16+1=1700是0,ff是255。
以上表示,懂编程的一看便知,不再解释。
每手棋用两个字节表示,前一个字节表示坐标,后一个表示与后面坐标的关系。
比如7840的78表示天元的第一手棋。第一个坐标需要加1(如果你使用1-15为坐标,便是88),反之第二个减1(如果你用0-14为坐标,便是77)。40代表这手棋是叶结点。
这个棋谱就是两个byte数 120和64。
那么字再看棋谱7800 0140
78表示天元1子。00表示后面只有子节点。01表示左上角的坐标,40表示叶结点。如果坐标后面是c0,表示自己没有子节点,但是有兄弟节点。如果坐标后面是80,表示自己有子节点也有兄弟节点。同时子节点紧跟其后。
这些规则综合使用可以表示任何复杂局面。
归纳一下:
美一手棋后面的步骤只有4种情况,
1最后一个叶子。用40。
2后面有子,但没有兄弟,用00。
3后面只有兄弟,用c0。
4后面有儿子和兄弟,用80。
后面的棋递归使用这些规则。
如果某手棋有兄弟和儿子,儿子在前面,儿子的儿子和兄弟等表示完毕,再轮到它的兄弟。
Renlib3.0以前版本和Rena的表示方法相同。3.0以后增加了新的
注释方法,同时棋谱前面加了个标注。
#3 Re:谁能帮我讲一下……Rena棋谱的编码格式? 作者:潇洒 发表时间:2012-9-12 15:05:58
这个有志写的。。我复制过来~