一盘让子棋引发的Bug

和一学妹下了盘让子棋,让2子,结果却全盘无活棋。下完之后想将棋谱交给她,于是用wgs2sgf转换,转换完成,打开一看,发现黑白颠倒了,原来wgs2sgf处理棋谱的方式是奇黑偶白,而让子棋正好反过来,奇白偶黑,盘上预先放黑子。

转换前棋谱

转换前棋谱

转换后棋谱

转换后棋谱

看来wgs2sgf得大改了。凭空又多出一件事来。写程序要考虑的周到真是一件麻烦的事。

用UltraEdit分析这盘让子棋,却找错了位置,找到 70h,8和70h,9去了。ED 00,相对2来说是很大的一个数字,看不出和让2子有啥区别。于是又去认输了几盘让3,5,9子的棋,恩,这下数字小了,让9子的是 04 00,可是,一点规律也没有。待我认真看过之前分析记录,才发现,这里保存的是手数信息...难怪让9子的这么小,因为我下了2手就认输了...

继续苦逼的毫无头绪的解读,根据已解读的信息,估计在50h或者60h行。最终,在60h,4发现了规律,这里就是让子数!继续努力,发现60h,7和60h,8疑似贴目。看来我需要更多的棋谱来好好分析,解读不完全总会有些信息不好处理,目前处理贴目的方法是定死了7.5目,现在才想到,9路棋不是贴7.5目!

wgs分析

wgs分析

曾经想过前面部分应该和自动命名的信息相吻合,QQ围棋棋谱自动命名的格式是 日期-时间 黑棋昵称段位[QQ号] 胜负 白棋昵称段位[QQ号],可是,00h,0到00h,3怎么看都不像是日期。20h和50h两行保存的貌似是相同类型的数据,可是,目前还看不出是什么数据,只知道a列大概是段位信息。

下表列出已经解读的和未解读的信息:

起始 结束 数据 字节数 备注
00h,0 00h,3 未知 4
00h,4 00h,9 黑棋QQ号 6
00h,a 10h,f 黑棋昵称 22
20h,0 20h,9 未知 10
20h,a 20h,a 黑棋段位 1
20h,b 20h,f 未知 5
30h,0 30h,3 未知 4
30h,4 30h,9 白棋QQ号 6
30h,a 40h,f 白棋昵称 22
50h,0 50h,9 未知 10
50h,a 50h,a 白棋段位 1
50h,b 50h,f 未知 5
60h,0 60h,3 未知 4
60h,4 60h,4 让子数 1
60h,5 60h,5 棋盘大小 1
60h,6 60h,6 未知 1
60h,7 60h,8 贴目 2 待验证
60h,9 60h,9 和胜负有关 1 待验证(09表示中盘结束,08表示超时结束,0A点目结束,00对局中尚无胜负,)
60h,a 60h,a 胜负,00黑负,01黑胜 1 待验证
60h,b 60h,f 未知 5 或许有点目结果数据
70h,0 70h,7 未知 8
70h,8 70h,9 总手数 2
70h,a 结束 对局 总字节-122

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注