必威体育Betway必威体育官网
当前位置:首页 > IT技术

qq象棋棋谱格式详解及其解析

时间:2019-08-14 09:12:07来源:IT技术作者:seo实验室小编阅读:81次「手机版」
 

象棋棋谱

用qq游戏大厅里带的那个象棋游戏看起来很不爽,而且它导出的棋谱是左右颠倒的。以下是用记事本打开qq象棋棋谱文件经过一番观察后得出的结论:

下面是一份完整的che格式的文件:

1 62 21 32 1 0 1 2 2 0 1 0 10 32 0 7 7 7 4 0 2 0 26 32 1 2 7 2 5 0 3 0 6 32 0 9 7 7 6 0 4 0 17 32 1 0 3 1 4 0 5 0 1 32 0 9 3 8 4 0 6 0 30 32 1 3 6 4 6 0 7 0 8 32 0 9 8 9 7 0 8 0 22 32 1 0 7 2 6 0 9 0 5 32 0 9 1 7 2 0 10 0 22 32 1 2 6 4 5 0 11 0 13 32 0 6 4 5 4 0 12 0 28 32 1 3 2 4 2 0 13 0 9 32 0 7 1 7 0 0 14 0 25 32 1 2 1 6 1 0 15 0 8 32 0 9 7 5 7 0 16 0 22 32 1 4 5 5 3 0 17 0 5 32 0 7 2 6 4 0 18 0 25 32 1 6 1 6 4 0 19 0 6 32 0 7 6 6 4 0 20 0 22 32 1 5 3 7 4 0 21 0 3 32 0 9 2 7 4 0 22 0 23 32 1 0 0 0 1 0 23 0 14 32 0 6 6 5 6 0 24 0 21 32 1 2 2 4 3 0 25 0 6 32 0 6 4 7 6 0 26 0 30 32 1 4 6 5 6 0 27 0 8 32 0 5 7 5 6 0 28 0 19 32 1 0 2 2 4 0 29 0 9 32 0 7 0 3 0 0 30 0 21 32 1 4 3 6 2 0 31 0 9 32 0 3 0 3 2 0 32 0 21 32 1 6 2 4 3 0 33 0 7 32 0 9 0 9 3 0 34 0 23 32 1 0 1 0 3 0 35 0 8 32 0 5 6 3 6 0 36 0 24 32 1 0 8 0 7 0 37 0 8 32 0 3 6 3 4 0 38 0 24 32 1 0 7 7 7 0 39 0 8 32 0 3 4 3 6 0 40 0 26 32 1 2 5 4 5 0 41 0 13 32 0 5 4 4 4 0 42 0 26 32 1 4 5 4 6 0 43 0 13 32 0 4 4 4 3 0 44 0 24 32 1 7 7 7 6 0 45 0 8 32 0 3 6 3 5 0 46 0 28 32 1 4 2 5 2 0 47 0 9 32 0 3 2 3 4 0 48 0 28 32 1 5 2 6 2 0 49 0 13 32 0 4 3 3 3 0 50 0 26 32 1 4 6 4 4 0 51 0 13 32 0 3 3 2 3 0 52 0 23 32 1 0 3 0 1 0 53 0 8 32 0 3 5 4 5 0 54 0 23 32 1 0 1 4 1 0 55 0 13 32 0 2 3 1 3 0 56 0 26 32 1 4 4 4 3 0 57 0 8 32 0 4 5 4 3 0 58 0 23 32 1 4 1 4 3 0 59 0 7 32 0 9 3 4 3 0 60 0 17 32 1 1 4 2 3 0 61 0 9 32 0 3 4 0 4 0 62 0

把这些数据保存到文本文件中再把后缀名改为che就可以用qq象棋程序打开。

其中第一个1无意义,第二个数字62表示棋谱总共有多少步数。接下来可以发现32出现多次,而且间隔一都是10。所以从文件的第三个数字21开始每10个数字一组分组,然后和记录下来的棋谱相比,有以下规律:

21 32 1 0 1 2 2 0 1 0

10 32 0 7 7 7 4 0 2 0

这是前两组。每组的第一个数表示是哪个棋子,如21表示马,10表示炮。经过与记录下的棋谱对比后发现:

若是黑方走子,则:

0(将);1,2(士);3,4(象);5,6(马);7,8(车);9,10(炮);

11,12,13,14,15(卒)。

若是红方走子,则:

16(帅);17,18(士);19,20(相);21,22(马);23,24(车);25,26(炮);

27,28,29,30,21(兵)。

每组的第二个数字不变,总为32。

每组第三个数字表示此步走子为红方还是黑方,1代表红方,0代表黑方。

每组第四,五,六,七个数字表示源位置和目标位置的坐标。

每组第八个数字总是0。

每组第九个数字表示是棋谱中的第几步走子。

第十个数字也总是为0。

于是,根据以上分析,可得出qq棋谱文件格式的数据结构:

#defineQQRED1

#defineQQBLACK0

typedefstructtagQQFileHeader...{

intid;//一个整数,无意义

inttotalMove;//棋谱的总步数

}QQFILEHEADER;

typedefstructtagQQMovecommand...{

intchessManName;

intreserved;//值为32

intredBlack;//1表示红方,0表示黑方

intxSrc;

intySrc;

intxDst;

intyDst;

intreserved2;//值为0

intorder;//处于总棋谱中的第几步

intreserved3;//值为0

}QQMOVECOMMAND;

以下解析qq棋谱的程序便轻而易举。

上述数据实际上描述的棋谱为:

马八进七 炮8平5

炮二平四 马8进7

土六进五 土4进5

兵三进一 车9平8

马二进三 马2进3

马三进四 卒5进1

兵七进一 炮2平1

炮八进四 车8进4

马四进六 马3进5

炮八平五 马7进5

马六进五 象3进5

车九平八 卒7进1

马七进六 马5退7

兵三进一 车8平7

相七进五 炮1进4

马六进七 炮1平3

马七退六 车1平4

车八平六 车7进2

车一平二 车7平5

车二进七 车5平7

炮四进二 卒5进1

炮四平三 卒5平4

车二平三 车7平6

兵七进一 炮3平5

兵七进一 卒4进1

炮三平五 卒4进1

车六平八 车6退1

车八进四 卒4进1

炮五平六 车6平4

车八平六 车4进5

土五进六 炮5进3

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

相关阅读

edius怎么导出ts格式的视频?

edius中的视频想要导出为ts文件,该怎么导出ts视频呢?下面我们就来看看详细的教程。1、首先就是最基本的输出出入点的确定2、再就是

excel2010使用条件格式的方法步骤

条件格式:也是格式的一种、对格式的呈现附加了条件因素,Excle2010中对条件格式功能进行较大的扩充,一个单元格可以设置多个条件格式

打开AVI格式的视频提示COM Surrogate已停止工作

今天不知道怎么回事,自己只要打开AVI格式的视频,电脑右下角的任务栏就会跳出一个小图标并且COM Surrogate停止工作,怎么办啊出现这个

Python3学习3 格式化 % format

一、%格式化 1.整数输出 %d # 十进制 %o # 八进制 %x # 十六进制 print("%d"%23) # 23 print("%o"%23) # 27 print("%x"%

Linux下Crontab的格式及含义

crontab的基本格式:f1  f2  f3  f4  f5  command分  时     日  月  周  命令第一列f1代表分钟1~59:当f1为*表示

分享到:

栏目导航

推荐阅读

热门阅读