每个棋子在当前点的所有可能走的情况用一个容器存储起来,根据搜索的层数输出相应的权值。
在搜索到最底层的时候进行权值的判断,判断的最终结果为棋盘上面的黑棋的棋子分减去棋盘上面的红棋的棋子分。
long long singleGame::calcScore()
{
long long redTotalScore=0;
long long blackTotalScore=0;
//enum TYPE{JIANG,CHE,PAO,MA,BING,SHI,XIANG};
static long long chessScore[]={10000,90,45,40,10,20,20};
for(int i=0;i<16;++i)
{
if(_s[i]._dead) continue;
redTotalScore+=chessScore[_s[i]._type];
}
for(int i=16;i<32;++i)
{
if(_s[i]._dead) continue;
blackTotalScore+=chessScore[_s[i]._type];
}
return blackTotalScore-redTotalScore;
}