黑白棋开局库研究

本文探讨了黑白棋开局库的重要性和数据结构设计,包括采用链表而非树形结构的考虑,以及BOOK_MOVE和BOOKEX结构的详细说明。通过棋局分析生成开局库,并介绍了一种局面匹配和得分更新的方法。最后提到了开局库的自学习可能性,但实际效果仍有待验证。
摘要由CSDN通过智能技术生成

    众所周知,开局库在黑白棋中是非常重要的。以下是我设想的开局库数据结构。为了简单,设计成一个链表,而没有采用树形结构。align这些都是为了字节对齐而加的,没有实际意义。

typedef struct  BOOK_MOVE_Tag
{
    char    x;      //走法
    char    y;
    char    _align0;
    char    _align1;
    long    score;  //得分,根据数据库数据生成(直接累加由此走法导致的结果比分),如果某走法在数据库中没有,赋值为负最大(-INF)
    long    count;  //这个走法在数据库中出现的次数
} BOOK_MOVE;

typedef struct  BOOKEX_Tag
{
    unsigned char       board[BOARD_SIZE * BOARD_SIZE / 4]; //当前局面,每个点用2bits表示,00-White, 01-Black, 10-Blank, 11-NA
    char                side;       //当前局面该谁走棋
    char                _align0;
    char                _align1;
    char                _align2;
    long                move_count; //当前局面下side一方的可行走法数
    BOOK_MOVE           *ml;        //走法列表,动态分配内存。<

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值