C/C++中国象棋程序入门与提高
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

5.2 带棋子数组的评估

如果程序中设置了棋子数组,则算法做相应修改。

算法5-2:带棋子数组的评估算法

        输入:棋子数组
        输出:局面的估值
        wValue:红方棋子价值的总和
        bValue:黑方棋子价值的总和
        wValue=bValue=0;
        1 棋子pc=16 to 31
            如果piece[pc]>0(棋子仍在棋盘上),则
                wValue = wValue + pc棋子对应的价值
        2 棋子pc=32 to 47
            如果piece[pc]>0(棋子仍在棋盘上),则
                bValue = bValue + pc棋子对应的价值
        return wValue - bValue

程序代码

          short Eval(void)
          {
              int i;
              short bValue,wValue;
              bValue = wValue = 0;

              for(i=16; i<32; i++)
              {
                if(piece[i]>0)
                    wValue = wValue + PieceValue[IntToSubscript(i)];
              }
              for(i=32; i<48; i++)
              {
                if(piece[i]>0)
                    bValue = bValue + PieceValue[IntToSubscript(i)];
              }

              return wValue - bValue;
          }

参见程序5-2.cpp。