本文整理汇总了C++中MoveList::GetSize方法的典型用法代码示例。如果您正苦于以下问题:C++ MoveList::GetSize方法的具体用法?C++ MoveList::GetSize怎么用?C++ MoveList::GetSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MoveList
的用法示例。
在下文中一共展示了MoveList::GetSize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GlobalExchangeEvaluation
Score GlobalExchangeEvaluation(Board &board, std::vector<Move> &pv, Score currentEval, Score lowerBound, Score upperBound)
{
assert(pv.empty());
// try standpat
if (currentEval >= upperBound)
{
return currentEval;
}
else if (currentEval > lowerBound)
{
lowerBound = currentEval;
}
MoveList captures;
board.GenerateAllLegalMoves<Board::VIOLENT>(captures);
std::vector<Move> subPv;
for (size_t i = 0; i < captures.GetSize(); ++i)
{
Score see = StaticExchangeEvaluation(board, captures[i]);
// we only want to search positive SEEs (not even neutral ones), and only if it can possibly improve lowerBound
if ((see < 0) || ((currentEval + see) <= lowerBound))
{
continue;
}
subPv.clear();
PieceType capturedPt = board.GetCapturedPieceType(captures[i]);
board.ApplyMove(captures[i]);
Score score = -GlobalExchangeEvaluation(board, subPv, -(currentEval + SEE_MAT[capturedPt]), -upperBound, -lowerBound);
board.UndoMove();
if (score >= upperBound)
{
return score;
}
if (score > lowerBound)
{
lowerBound = score;
pv.clear();
pv.push_back(captures[i]);
pv.insert(pv.end(), subPv.begin(), subPv.end());
}
}
return lowerBound;
}