本文整理汇总了C++中Moves::add方法的典型用法代码示例。如果您正苦于以下问题:C++ Moves::add方法的具体用法?C++ Moves::add怎么用?C++ Moves::add使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Moves
的用法示例。
在下文中一共展示了Moves::add方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: generateEvasions
void TardyMoveGenerator::generateEvasions(const Position& position, CheckState cs, Moves& moves) {
Turn turn = position.getTurn();
Square king = turn == Turn::Black ? position.getBlackKingSquare() : position.getWhiteKingSquare();
if (!isDoubleCheck(cs)) {
::generateMoves(position, moves, [king, cs](PieceType pieceType, Square to) {
if (pieceType == PieceType::king()) {
return false;
}
auto dir = king.dir(cs.from1);
for (auto s = king.move(dir); ; s = s.move(dir)) {
if (s == to) { return true; }
if (s == cs.from1) { break; }
}
return false;
});
}
auto& list = MovableMap.find(PieceNumber::King)->second;
for (auto& info : list) {
Square to = king.safetyMove(info.dir);
if (!to.isValid()) {
continue;
}
Piece pieceTo = position.getPieceOnBoard(to);
if ((turn == Turn::Black && pieceTo.isBlack()) ||
(turn == Turn::White && pieceTo.isWhite())) {
continue;
}
moves.add(Move(king, to, false));
}
}