QuiescenceSearch で使う指手生成. [詳細]
#include <quiescenceGenerator.h>
Static Public メソッド | |
template<Ptype PTYPE, bool has_dont_capture> | |
static void | capture (const NumEffectState &, MoveVector &moves, Piece dont_capture) |
P が敵の PTYPE を取る手を生成する.. | |
static void | capture (const NumEffectState &, Position target, MoveVector &moves) |
P が敵の target を取る手を生成する.. | |
static void | capture1 (const NumEffectState &state, Position target, MoveVector &moves) |
P が敵の target を取る手を最大1手生成する.. | |
static void | promote (const NumEffectState &, PieceMask pins, MoveVector &moves) |
template<Ptype PTYPE> | |
static void | promote (const NumEffectState &, MoveVector &moves) |
template<Ptype PTYPE, size_t N> | |
static void | promoteN (const NumEffectState &, MoveVector &moves, const HistoryTable &table) |
static void | check (const NumEffectState &, PieceMask pins, MoveVector &moves, bool no_liberty=false) |
static void | check (const NumEffectState &, PieceMask pins, bool no_liberty, const Position8 &sendoffs, MoveVector &moves) |
static void | escapeKing (const NumEffectState &state, MoveVector &moves) |
static bool | escapeKingInTakeBack (const NumEffectState &state, MoveVector &moves, bool check_by_lance) |
static void | dropMajorPiece (const NumEffectState &state, MoveVector &moves) |
static void | dropMajorPiece3 (const NumEffectState &state, MoveVector &moves, const HistoryTable &table) |
static void | attackMajorPiece (const NumEffectState &state, PieceMask pins, MoveVector &moves) |
static void | escapeAll (const NumEffectState &state, MoveVector &moves) |
static void | escapeNormalPiece (const NumEffectState &state, Piece escape, MoveVector &moves, bool add_support_only=false) |
template<class EvalT > | |
static void | escapeFromLastMove (const NumEffectState &state, Move last_move, MoveVector &moves) |
直前に指手から逃げる | |
template<class EvalT > | |
static void | escapeFromLastMoveOtherThanPawn (const NumEffectState &state, Move last_move, MoveVector &moves) |
static bool | escapeByMoveOnly (const NumEffectState &state, Piece piece, MoveVector &moves) |
static void | attackGoldWithPawn (const NumEffectState &state, PieceMask pins, MoveVector &moves) |
static void | attackWithKnight (const NumEffectState &state, PieceMask pins, Position attack_from, bool has_knight, MoveVector &moves) |
static void | attackSilverWithPawn (const NumEffectState &state, PieceMask pins, MoveVector &moves) |
static void | attackKnightWithPawn (const NumEffectState &state, PieceMask pins, MoveVector &moves) |
static void | advanceBishop (const NumEffectState &state, MoveVector &moves) |
角が前に進む. | |
template<Direction DIR> | |
static void | advanceBishop (const NumEffectState &state, const Position from, MoveVector &moves) |
static void | attackKing8 (const NumEffectState &state, PieceMask pins, MoveVector &moves) |
static void | attackToPinned (const NumEffectState &state, PieceMask pins, MoveVector &moves) |
static void | utilizePromoted (const NumEffectState &state, Piece target, MoveVector &moves) |
static void | breakThreatmate (const NumEffectState &state, Move threatmate, PieceMask pins, MoveVector &moves) |
static void | kingWalk (const NumEffectState &state, MoveVector &moves) |
Static Private メソッド | |
static void | attackMajorPieceSecondSelection (bool target_has_support, const MoveVector &src, MoveVector &out) |
static void | attackMajorPieceFirstSelection (const NumEffectState &state, PieceMask pins, const MoveVector &all_moves, MoveVector &moves, MoveVector &expensive_drops) |
static void | attackMajorPieceZerothSelection (const NumEffectState &state, const MoveVector &src, Position target, MoveVector &open_out, MoveVector &out) |
QuiescenceSearch で使う指手生成.
quiescenceGenerator.h の 28 行で定義されています。
void osl::search::QuiescenceGenerator< P >::advanceBishop | ( | const NumEffectState & | state, | |
const Position | from, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1431 行で定義されています。
参照先 osl::BISHOP, と osl::PTYPE_EMPTY.
void osl::search::QuiescenceGenerator< P >::advanceBishop | ( | const NumEffectState & | state, | |
MoveVector & | moves | |||
) | [inline, static] |
角が前に進む.
覗いて成を受けにくい読み抜けを防ぐ
quiescenceGenerator.tcc の 1410 行で定義されています。
参照先 osl::BISHOP, osl::PtypeTraits< BISHOP >::indexMin, osl::Piece::isOnBoardByOwner(), osl::Piece::position(), と osl::Piece::ptype().
void osl::search::QuiescenceGenerator< P >::attackGoldWithPawn | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1006 行で定義されています。
参照先 osl::alt(), osl::search::QuiescenceGenerator< P >::attackWithKnight(), osl::BISHOP, osl::Position::canPromote(), osl::PtypeTraits< GOLD >::indexMin, osl::Piece::isOnBoardByOwner(), osl::KNIGHT, osl::LANCE, osl::Piece::owner(), osl::PAWN, osl::Piece::position(), osl::Piece::ptype(), osl::PTYPE_EMPTY, osl::SILVER, と osl::Position::x().
void osl::search::QuiescenceGenerator< P >::attackKing8 | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 670 行で定義されています。
参照先 osl::alt(), osl::BLACK, osl::captured(), osl::Move::capturePtype(), osl::move_generator::capture::generate(), osl::PtypeTable::getMoveMask(), osl::Move::isDrop(), osl::isMajor(), osl::Neighboring8::isNeighboring8(), osl::Move::isPromote(), osl::isPromoted(), osl::LANCE, osl::PtypeTraits< GOLD >::moveMask, osl::PAWN, osl::Position::positionForBlack(), osl::Move::ptype(), osl::PTYPE_EMPTY, osl::Ptype_Table, osl::Move::to(), osl::WHITE, osl::Position::x(), と osl::Position::y().
void osl::search::QuiescenceGenerator< P >::attackKnightWithPawn | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
void osl::search::QuiescenceGenerator< P >::attackMajorPiece | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 180 行で定義されています。
参照先 osl::alt(), osl::search::QuiescenceGenerator< P >::attackMajorPieceFirstSelection(), osl::search::QuiescenceGenerator< P >::attackMajorPieceSecondSelection(), osl::search::QuiescenceGenerator< P >::attackMajorPieceZerothSelection(), osl::Piece::EMPTY(), osl::PtypeTraits< BISHOP >::indexLimit, osl::PtypeTraits< BISHOP >::indexMin, osl::PtypeTraits< ROOK >::indexMin, osl::isMajor(), osl::Piece::isOnBoardByOwner(), osl::Piece::position(), osl::Piece::ptype(), osl::ROOK, target, と osl::U.
void osl::search::QuiescenceGenerator< P >::attackMajorPieceFirstSelection | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
const MoveVector & | all_moves, | |||
MoveVector & | moves, | |||
MoveVector & | expensive_drops | |||
) | [inline, static, private] |
quiescenceGenerator.tcc の 64 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::Position::canPromote(), osl::Move::isDrop(), osl::newPtypeO(), osl::PAWN, osl::Move::ptype(), osl::eval::Ptype_Eval_Table, osl::Piece::ptypeO(), osl::ROOK, osl::Move::to(), osl::unpromote(), osl::eval::PtypeEvalTraits< KNIGHT >::val, と osl::eval::PtypeEvalTraits< BISHOP >::val.
参照元 osl::search::QuiescenceGenerator< P >::attackMajorPiece().
void osl::search::QuiescenceGenerator< P >::attackMajorPieceSecondSelection | ( | bool | target_has_support, | |
const MoveVector & | src, | |||
MoveVector & | out | |||
) | [inline, static, private] |
void osl::search::QuiescenceGenerator< P >::attackMajorPieceZerothSelection | ( | const NumEffectState & | state, | |
const MoveVector & | src, | |||
Position | target, | |||
MoveVector & | open_out, | |||
MoveVector & | out | |||
) | [inline, static, private] |
void osl::search::QuiescenceGenerator< P >::attackSilverWithPawn | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1204 行で定義されています。
参照先 osl::alt(), osl::search::QuiescenceGenerator< P >::attackWithKnight(), osl::BISHOP, osl::Position::canPromote(), osl::Move::from(), osl::move_generator::capture::generate(), osl::move_generator::addeffect8::hasEffect(), osl::PtypeTraits< SILVER >::indexMin, osl::Piece::isOnBoardByOwner(), osl::Move::isPromote(), osl::KNIGHT, osl::LANCE, osl::Piece::owner(), osl::PAWN, osl::Piece::position(), osl::Piece::ptype(), osl::PTYPE_EMPTY, osl::Piece::ptypeO(), osl::SILVER, と osl::Position::x().
void osl::search::QuiescenceGenerator< P >::attackToPinned | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
void osl::search::QuiescenceGenerator< P >::attackWithKnight | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
Position | attack_from, | |||
bool | has_knight, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1097 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::BOOST_STATIC_ASSERT(), osl::Piece::EMPTY(), osl::GOLD, osl::PtypeTraits< KNIGHT >::indexLimit, osl::Piece::isOnBoardByOwner(), osl::Piece::isPromoted(), osl::KNIGHT, osl::Piece::position(), osl::Piece::ptype(), と osl::PTYPE_EMPTY.
参照元 osl::search::QuiescenceGenerator< P >::attackGoldWithPawn(), と osl::search::QuiescenceGenerator< P >::attackSilverWithPawn().
void osl::search::QuiescenceGenerator< P >::breakThreatmate | ( | const NumEffectState & | state, | |
Move | threatmate, | |||
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 874 行で定義されています。
参照先 osl::alt(), osl::Board_Table, osl::PtypeTable::canDropTo(), osl::captured(), osl::Move::capturePtype(), osl::search::BreakThreatmate::findBlockLong(), osl::Move::from(), osl::move_generator::capture::generate(), osl::GOLD, osl::Move::isDrop(), osl::isMajor(), osl::Move::isNormal(), osl::Piece::isPiece(), osl::Move::isPromote(), osl::KING, osl::KNIGHT, osl::LANCE, osl::BoardTable::nextPosition(), osl::Piece::owner(), osl::PAWN, osl::Piece::position(), osl::Move::ptype(), osl::PTYPE_EMPTY, osl::eval::Ptype_Eval_Table, osl::Ptype_Table, osl::SHORT8_DIRECTION_MAX, osl::SHORT8_DIRECTION_MIN, osl::SILVER, target, osl::Move::to(), osl::eval::PtypeEvalTraits< KNIGHT >::val, と osl::Position::x().
void osl::search::QuiescenceGenerator< P >::capture | ( | const NumEffectState & | state, | |
Position | target, | |||
MoveVector & | moves | |||
) | [inline, static] |
P が敵の target を取る手を生成する..
quiescenceGenerator.h の 148 行で定義されています。
template void osl::search::QuiescenceGenerator< P >::capture< ROOK, false > | ( | const NumEffectState & | , | |
MoveVector & | moves, | |||
Piece | dont_capture | |||
) | [inline, static] |
P が敵の PTYPE を取る手を生成する..
dont_capture | これを取る手は除く |
quiescenceGenerator.tcc の 22 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::move_generator::capture::generate(), osl::Piece::isPiece(), osl::KNIGHT, osl::LANCE, osl::PAWN, osl::Piece::position(), osl::Piece::ptype(), と target.
static void osl::search::QuiescenceGenerator< P >::capture1 | ( | const NumEffectState & | state, | |
Position | target, | |||
MoveVector & | moves | |||
) | [inline, static] |
P が敵の target を取る手を最大1手生成する..
quiescenceGenerator.h の 45 行で定義されています。
void osl::search::QuiescenceGenerator< P >::check | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
bool | no_liberty, | |||
const Position8 & | sendoffs, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 519 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::Position::canPromote(), osl::captured(), osl::Move::capturePtype(), osl::Move::from(), osl::Move::isDrop(), osl::Move::isPromote(), osl::KNIGHT, osl::LANCE, osl::newPtypeO(), osl::PAWN, osl::Move::ptype(), osl::PTYPE_EMPTY, osl::eval::Ptype_Eval_Table, osl::Piece::ptypeO(), osl::Move::ptypeO(), osl::ROOK, osl::Move::to(), osl::unpromote(), と osl::eval::PtypeEvalTraits< KNIGHT >::val.
void osl::search::QuiescenceGenerator< P >::check | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves, | |||
bool | no_liberty = false | |||
) | [inline, static] |
quiescenceGenerator.tcc の 507 行で定義されています。
参照先 osl::alt().
void osl::search::QuiescenceGenerator< P >::dropMajorPiece | ( | const NumEffectState & | state, | |
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1506 行で定義されています。
void osl::search::QuiescenceGenerator< P >::dropMajorPiece3 | ( | const NumEffectState & | state, | |
MoveVector & | moves, | |||
const HistoryTable & | table | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1513 行で定義されています。
void osl::search::QuiescenceGenerator< P >::escapeAll | ( | const NumEffectState & | state, | |
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 354 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::search::QuiescenceGenerator< P >::escapeNormalPiece(), finish(), osl::GOLD, osl::Piece::isOnBoardByOwner(), osl::KNIGHT, osl::LANCE, osl::PAWN, osl::PKNIGHT, osl::Piece::position(), osl::Piece::ptype(), osl::ROOK, と osl::SILVER.
bool osl::search::QuiescenceGenerator< P >::escapeByMoveOnly | ( | const NumEffectState & | state, | |
Piece | piece, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 462 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::Board_Table, osl::Move::capturePtype(), osl::Move::from(), osl::move_generator::capture::generate(), osl::BoardTable::getShortOffset(), osl::move_generator::addeffect8::hasEffect(), osl::isMajor(), osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::Position::position, osl::PTYPE_EMPTY, osl::ROOK, と osl::Move::to().
template void osl::search::QuiescenceGenerator< P >::escapeFromLastMove< eval::ml::OpenMidEndingEval > | ( | const NumEffectState & | state, | |
Move | last_move, | |||
MoveVector & | moves | |||
) | [inline, static] |
直前に指手から逃げる
quiescenceGenerator.tcc の 1452 行で定義されています。
参照先 osl::alt(), osl::Move::capturePtype(), osl::Move::from(), osl::move_generator::capture::generate(), osl::Move::isDrop(), osl::Move::isNormal(), osl::Piece::isOnBoardByOwner(), osl::Move::isPromote(), osl::PAWN, osl::Move::ptype(), osl::PTYPE_EMPTY, target, と osl::Move::to().
void osl::search::QuiescenceGenerator< P >::escapeFromLastMoveOtherThanPawn | ( | const NumEffectState & | state, | |
Move | last_move, | |||
MoveVector & | moves | |||
) | [inline, static] |
void osl::search::QuiescenceGenerator< P >::escapeKing | ( | const NumEffectState & | state, | |
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1321 行で定義されています。
参照先 osl::alt(), osl::Move::capturePtype(), osl::Move::isDrop(), osl::KING, osl::PAWN, osl::Move::ptype(), osl::PTYPE_EMPTY, と osl::Move::to().
bool osl::search::QuiescenceGenerator< P >::escapeKingInTakeBack | ( | const NumEffectState & | state, | |
MoveVector & | moves, | |||
bool | check_by_lance | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1358 行で定義されています。
参照先 osl::alt(), osl::Move::capturePtype(), osl::move_generator::capture::generate(), osl::Move::isDrop(), osl::KING, osl::Move::ptype(), osl::PTYPE_EMPTY, osl::Position::STAND(), と osl::Move::to().
void osl::search::QuiescenceGenerator< P >::escapeNormalPiece | ( | const NumEffectState & | state, | |
Piece | escape, | |||
MoveVector & | moves, | |||
bool | add_support_only = false | |||
) | [inline, static] |
escape | KING以外の駒 |
quiescenceGenerator.tcc の 232 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::Board_Table, osl::Move::capturePtype(), osl::Move::from(), osl::BoardTable::getShortOffset(), osl::Move::isDrop(), osl::Move::isPromote(), osl::KING, osl::LANCE, osl::PAWN, osl::Piece::position(), osl::Move::ptype(), osl::Piece::ptype(), osl::PTYPE_EMPTY, osl::eval::Ptype_Eval_Table, osl::Move::to(), osl::unpromote(), osl::eval::PtypeEvalTraits< KNIGHT >::val, と osl::eval::PtypeEvalTraits< BISHOP >::val.
参照元 osl::search::QuiescenceGenerator< P >::escapeAll(), と osl::search::QuiescenceGenerator< P >::escapeFromLastMoveOtherThanPawn().
void osl::search::QuiescenceGenerator< P >::kingWalk | ( | const NumEffectState & | state, | |
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 1305 行で定義されています。
参照先 osl::alt(), osl::move_generator::capture::generate(), と osl::Move::to().
void osl::search::QuiescenceGenerator< P >::promote | ( | const NumEffectState & | state, | |
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.h の 161 行で定義されています。
void osl::search::QuiescenceGenerator< P >::promote | ( | const NumEffectState & | state, | |
PieceMask | pins, | |||
MoveVector & | moves | |||
) | [inline, static] |
quiescenceGenerator.tcc の 615 行で定義されています。
参照先 osl::alt(), osl::Move::from(), osl::move_generator::capture::generate(), osl::PtypeTraits< ROOK >::indexMin, osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::Piece::position(), osl::PPAWN, osl::PROOK, osl::Piece::ptype(), osl::Move::ptype(), osl::PTYPE_EMPTY, osl::ROOK, osl::Move::to(), osl::Position::x(), と osl::Position::y().
void osl::search::QuiescenceGenerator< P >::promoteN | ( | const NumEffectState & | state, | |
MoveVector & | moves, | |||
const HistoryTable & | table | |||
) | [inline, static] |
quiescenceGenerator.h の 170 行で定義されています。
参照先 osl::alt(), osl::eval::min(), osl::Move::to(), と osl::search::HistoryTable::value().
void osl::search::QuiescenceGenerator< P >::utilizePromoted | ( | const NumEffectState & | state, | |
Piece | target, | |||
MoveVector & | moves | |||
) | [inline, static] |