四国军棋吧 关注:37,636贴子:2,409,345

【军棋大数据计算】用数据分析棋子规律

只看楼主收藏回复

近日突发奇想,又把军棋捡起来了,想想用数据来分析一些事情。首先普及些许基础知识:
1、复盘JGS文件数据存储方式
用Ultra Edit打开复盘文件,如图所示

这款软件可以将任何文件以16进制数字的方式展现出来,这是打开了复盘文件的效果,这些数据是有具体含义的。这里只写与研究相关的数据。FH,这是16进制数字的表达方法,H表示16进制数,F是10进制数字15的意思,这里表示地址,FH处如图右上角那个位置的数据(00)
FH:第一个走棋的人所处的位置,00本家,01下家,02对家,03上家;
从1CH开始,就是记录玩家信息的了,每个玩家的信息占用88个字节。1CH-73H记录的是第一个走棋玩家的信息,74H-CBH记录的是第四个走棋玩家的信息,CCH-123H记录第三个走棋玩家的信息,124H-17BH记录第二个走棋玩家的信息。注意是1、4、3、2排列的。
3CH-59H 玩家布阵。从布阵的第一排到最后一排,每一排从左到右录入。00表示空位,02军旗,03地雷,04炸弹,05司令,06军长,07师长,08旅长,09团长,0A营长,0B连长,0C排长,0D工兵。
同理,94H-B1H是第四个走棋玩家的布阵,ECH-109H是第三个走棋玩家的布阵,144H-161H是第二个走棋玩家的布阵。

从19CH开始,就是记录具体走棋的过程了,每一步棋用10个字节记录,如第一步就是从19CH-1A5H共10个字节。每一步的起始地址可以用公式 192H+AH*步数 来计算出来
以某一特定的文件记录为例:5F 1B 0B 06 0A 05 00 00 00 00
第1个字节:走棋模式。5F为正常走棋(即把棋子从一个位置移动到另一个位置),F5为非正常走棋(战败、玩家离开、游戏结束、超时等等)
第2个字节:走棋结果。根据第1个字节的不同,有不同的含义。
当第1字节为5F时,
00:上家移动棋子但没有吃子
01:上家成功吃子
02:上家主动吃子但被吃掉
03:上家吃子但是双方兑掉
08:对家移动棋子但没有吃子
09:对家成功吃子
0A:对家主动吃子但被吃掉
0B:对家吃子但是双方兑掉
10:下家移动棋子但没有吃子
11:下家成功吃子
12:下家主动吃子但被吃掉
13:下家吃子但是双方兑掉
18:本方移动棋子但没有吃子
19:本方成功吃子
1A:本方主动吃子但被吃掉
1B:本方吃子但是双方兑掉
43:双方兑掉,并且至少有一个司令阵亡;
5B:双方兑掉,并且至少有一个司令阵亡;
4B:双方兑掉,并且至少有一个司令阵亡;
当第1个字节为F5时
05:本局游戏结束
04:某玩家退出游戏
03:某玩家战败
02:某玩家超时
第3个字节:根据第1字节的数据,有不同的含义。
当第1字节为5F时:所走棋子初始位置的横坐标。横纵坐标的方向是有规律的,以橙色玩家为主视角,横坐标的方向是↓,纵坐标的方向是←,坐标从00开始计算,到10为止(注意是十六进制数)。
当第1字节为F5,并且第二字节为02、03、04时:表示玩家,00第一个走棋的玩家(橙色),01第四个走棋的玩家(蓝色),02第三个走棋的玩家(绿色),03第二个走棋的玩家(紫色)。
当第1字节为F5,并且第二字节为05:含义不明。
第4个字节:根据第1字节的数据,有不同的含义
当第1字节为5F时:所走棋子初始位置的纵坐标。
当第1字节为F5,并且第二字节为02时:某玩家超时次数
当第1字节为F5,并且第二字节为03、04、05时:不明含义。
第5个字节:根据第1字节的数据,有不同的含义
当第1字节为5F时:所走棋子最终位置的横坐标。
当第1字节为F5时:含义不明。
第6个字节:根据第1字节的数据,有不同的含义
当第1字节为5F时:所走棋子最终位置的纵坐标。
当第1字节为F5时:含义不明。
第7-10字节:含义不明。但是无论是多少,不影响棋谱记录。


IP属地:河南1楼2021-10-25 21:18回复
    2、提取复盘文件信息


    凭借本人微微掌握的一点visual basic语言知识,提取复盘中的布阵信息和棋局信息。


    布阵输出的结果,仅仅是30个汉字紧密排列,由于输出的目的是数据统计,所以没有考虑视觉效果。为了方便统计和比较,将布阵进行处理,一律处理为军旗在左,若军旗在右,则对称化处理。

    走棋过程输出的信息有每步棋的:复盘文件名、步数、主动方、被动方、起始位置(用0-288的数字代替横纵坐标)、终止位置、主动棋子、被动棋子、结果。


    IP属地:河南2楼2021-10-25 21:31
    收起回复
      3、布阵结论

      左边为军旗侧,右边为非军旗侧,收集了665个布阵(去重处理之后),以司令为例,统计了其布阵规律。司令最易布放的位置为非军旗侧第一排,其次是军旗侧第一排,再其次是第一排中央及左右两路铁路线,并且呈现从前到后频率逐渐降低的特点。这说明,大家都比较喜欢用司令出击。
      4、子力阵亡数据

      以走棋过程研究下阵亡数据,收集了183个复盘的30000多步棋,进行统计。这里指出些许有意思的数据,
      1、军旗被吃145次,远远小于复盘数183,说明许多棋手都是不堪屈辱而主动点击的投降。
      2、司令主动出击但被吃16次,这是司令撞地雷啦!
      3、地雷被动迎击但打兑8次,这是炸弹在炸地雷呀!
      其实收集了大数据,有许多东西可以分析,只是本人思路有限,希望众多高手提出想法,看希望分析什么数据?


      IP属地:河南3楼2021-10-25 21:42
      收起回复
        能不能分类啊?我这边有十几万个复盘堆在一起,我想把它们分类一下,就是赢、输、和还有中途结束的这四种复盘分开来,然后再统计一下胜率。
        如果可以的话再增加个复盘搜索功能,就是输入玩家的名字可以搜索到他们的复盘,方便查找。


        IP属地:浙江来自Android客户端4楼2021-10-26 08:38
        收起回复
          这个是真的厉害


          IP属地:上海来自Android客户端5楼2021-10-26 14:05
          回复
            楼主是程序员吗


            IP属地:广西来自Android客户端6楼2021-10-27 09:41
            收起回复
              应该有更多的人研究军棋基础的层面,类似于象棋的人工智能软件。


              IP属地:浙江7楼2022-01-19 20:02
              回复
                可以,很强。
                还可以统计下像各个位置出现的棋子的概率,比如左边一线出现概率最高的是师长?然后是司令。。。出现概率最低是工兵等
                我感觉在三线,放军长的概率是最高的,因此很多时候都是直接空炸敌三线,
                不知道对不对。。。


                IP属地:湖北8楼2022-01-22 22:33
                回复
                  统计学大数据居然有人第一次应用到军旗上


                  IP属地:福建来自手机贴吧9楼2022-01-23 07:39
                  回复


                    IP属地:福建来自手机贴吧10楼2022-01-23 07:39
                    回复
                      军旗研究的剑走偏锋?有点意思。


                      11楼2022-01-23 09:15
                      回复
                        不会太监了吧,要分析有价值的东西


                        IP属地:贵州12楼2022-05-09 12:44
                        回复
                          四国军棋棋友群1050807863欢迎你


                          IP属地:江苏来自Android客户端13楼2022-05-09 12:48
                          回复
                            厉害


                            IP属地:江西14楼2022-05-09 22:49
                            回复