関数 | |
template<osl::Player P, class Action > | |
void | generateMovePiecePtypeMask (const NumEffectState &state, Piece p, Square to, Piece toP, Action &action, unsigned int ptypeMask) |
マスtoに移動可能な駒pを移動する手を生成する. ptypeMaskで指定されたptypeになる場合以外は手を生成しない. | |
template<osl::Player P, class Action > | |
void | generateMoveToPtypeMaskWithPieceMask (const NumEffectState &state, Square to, Piece toP, Action &action, unsigned int ptypeMask, PieceMask pieceMask) |
あるマスに利きを持つすべての駒の中で, ptypeMaskで指定されたptypeになる場合は移動する手を生成する | |
template<osl::Player P, class Action > | |
void | generateMoveToPtypeMask (const NumEffectState &state, Square to, Piece toP, Action &action, unsigned int ptypeMask) |
template<osl::Player P> | |
bool | blockingU (const NumEffectState &state, Square pos) |
敵玉の前に歩を置いた場合に遮った利きで敵玉にlibertyが生まれるかどうか? | |
template<osl::Player P, int DirType, class Action > | |
void | generateDir (const NumEffectState &state, Square target, Action &action, bool &hasPawnCheckmate, Offset dirOffset, Direction Dir, Direction primDir, int ptypeMaskNotKing) |
int DirType : 0 - U 1 - LRD 2 - UL,UR,DL,DR dirOffset = DirectionPlayerTraits<Dir,P>::offset() | |
template<osl::Player P, int DirType, class Action , Direction Dir> | |
void | generateDir (const NumEffectState &state, Square target, Action &action, bool &hasPawnCheckmate) |
template<osl::Player P, int DirType, class Action > | |
void | generateDirNotKing (const NumEffectState &state, Square target, Action &action, CArray< unsigned char, 8 > &pieceMobility, int &spaces, PieceMask const ¬PieceMask, Offset dirOffset, Direction Dir, Direction primDir, int ptypeMask, Direction dirByBlack) |
int DirType : 0 - U 1 - LRD 2 - UL,UR,DL,DR dirOffset = DirectionPlayerTraits<Dir,P>::offset() | |
template<osl::Player P, int DirType, class Action , Direction Dir> | |
void | generateDirNotKing (const NumEffectState &state, Square target, Action &action, CArray< unsigned char, 8 > &pieceMobility, int &spaces, PieceMask const ¬PieceMask) |
template<osl::Player P, osl::Direction Dir, class Action , bool hasKnight> | |
void | generateKnightDir (const NumEffectState &state, Square target, Action &action) |
template<osl::Player P, class Action > | |
void | generateKnightAll (const NumEffectState &state, Square target, Action &action) |
template<osl::Player P, class Action > | |
void | generateDrop (Square target, Action &action, int spaceMask, osl::Ptype T, int dirMask, Offset offset) |
template<osl::Player P, class Action , Direction Dir> | |
void | generateDropDir (Square target, Action &action, int spaceMask, osl::Ptype T) |
template<Player P, class Action , bool mustCareSilver> | |
void | generateOpenOrCapture (const NumEffectState &state, Square target, Piece p, int num, Action &action) |
template<osl::Player P, class Action > | |
void | generateRookLongMove (const NumEffectState &state, Square target, Action &action) |
template<osl::Player P, class Action > | |
void | generateRookLongMoveNotKing (const NumEffectState &state, Square target, Action &action, CArray< unsigned char, 8 > const &pieceMobility) |
template<Player P, Ptype T, class Action > | |
void | generateBishopLongMove (const NumEffectState &state, Square target, Action &action, Piece p, int num) |
template<osl::Player P, Ptype T, class Action > | |
void | generateBishopLongMoveNotKing (const NumEffectState &state, Square target, Action &action, CArray< unsigned char, 8 > const &pieceMobility, Piece p, int num) |
template<Player P, class Action > | |
void | generateDropGold (const NumEffectState &state, Square target, Action &action, int spaces) |
template<Player P, class Action > | |
void | generateDropSilver (const NumEffectState &state, Square target, Action &action, int spaces) |
template<Player P, class Action , bool allEmpty> | |
void | generateDropBishop (const NumEffectState &state, Square target, Action &action, Square ul, Square dr, Square ur, Square dl) |
allEmpty - shadow attackを生成する場合は,posがemptyでないこともある. | |
template<Player P, class Action , bool allEmpty> | |
void | generateDropRook (const NumEffectState &state, Square target, Action &action, Square l, Square r, Square d, Square u) |
template<osl::Player P, class Action > | |
void | generateKing (const NumEffectState &state, Square target, Action &action, bool &hasPawnCheckmate) |
template<osl::Player P, class Action > | |
void | generateNotKing (const NumEffectState &state, Square target, Action &action) |
bool osl::move_generator::detail::blockingU | ( | const NumEffectState & | state, | |
Square | pos | |||
) |
敵玉の前に歩を置いた場合に遮った利きで敵玉にlibertyが生まれるかどうか?
addEffectWithEffect.tcc の 96 行で定義されています。
参照先 osl::alt(), osl::BLACK, osl::Board_Table, osl::Piece::canMoveOn(), osl::NumEffectState::effectSetAt(), osl::PieceMask::getMask(), osl::BoardTable::getShortOffset(), osl::NumEffectState::hasMultipleEffectAt(), osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::NumEffectState::piecesOnBoard(), osl::Piece::square(), と osl::Square::y().
void osl::move_generator::detail::generateBishopLongMove | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
Piece | p, | |||
int | num | |||
) |
addEffectWithEffect.tcc の 643 行で定義されています。
参照先 osl::alt(), osl::BISHOP, osl::Piece::canMoveOn(), osl::DL, osl::DR, osl::NumEffectState::effectSetAt(), osl::Square::isOnBoard(), osl::NumEffectState::kingMobilityAbs(), osl::Square::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::SimpleState::pieceAt(), osl::Piece::square(), osl::Square::uintValue(), osl::UL, osl::UR, osl::Square::x(), と osl::Square::y().
void osl::move_generator::detail::generateBishopLongMoveNotKing | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > const & | pieceMobility, | |||
Piece | p, | |||
int | num | |||
) |
addEffectWithEffect.tcc の 738 行で定義されています。
参照先 osl::Piece::canMoveOn(), osl::DL, osl::DR, osl::NumEffectState::effectSetAt(), osl::Square::isOnBoard(), osl::Square::makeDirect(), osl::Square::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::PBISHOP, osl::SimpleState::pieceAt(), osl::Piece::square(), osl::Square::uintValue(), osl::UL, osl::UR, osl::Square::x(), と osl::Square::y().
void osl::move_generator::detail::generateDir | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
bool & | hasPawnCheckmate, | |||
Offset | dirOffset, | |||
Direction | Dir, | |||
Direction | primDir, | |||
int | ptypeMaskNotKing | |||
) |
int DirType : 0 - U 1 - LRD 2 - UL,UR,DL,DR dirOffset = DirectionPlayerTraits<Dir,P>::offset()
addEffectWithEffect.tcc の 124 行で定義されています。
参照先 osl::alt(), osl::Piece::EMPTY(), osl::NumEffectState::hasLongEffectAt(), osl::SimpleState::hasPieceOnStand(), osl::NumEffectState::Iking8Info(), osl::Piece::isEmpty(), osl::Square::isOnBoard(), osl::Piece::isOnBoardByOwner(), osl::SimpleState::isPawnMaskSet(), osl::NumEffectState::kingMobilityOfPlayer(), osl::SimpleState::kingSquare(), osl::LANCE, osl::NumEffectState::longEffectAt(), osl::PAWN, osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::NumEffectState::pinOrOpen(), osl::Piece::square(), osl::PieceMask::test(), と osl::Square::x().
void osl::move_generator::detail::generateDir | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
bool & | hasPawnCheckmate | |||
) |
addEffectWithEffect.tcc の 190 行で定義されています。
void osl::move_generator::detail::generateDirNotKing | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > & | pieceMobility, | |||
int & | spaces, | |||
PieceMask const & | notPieceMask | |||
) |
addEffectWithEffect.tcc の 321 行で定義されています。
void osl::move_generator::detail::generateDirNotKing | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > & | pieceMobility, | |||
int & | spaces, | |||
PieceMask const & | notPieceMask, | |||
Offset | dirOffset, | |||
Direction | Dir, | |||
Direction | primDir, | |||
int | ptypeMask, | |||
Direction | dirByBlack | |||
) |
int DirType : 0 - U 1 - LRD 2 - UL,UR,DL,DR dirOffset = DirectionPlayerTraits<Dir,P>::offset()
addEffectWithEffect.tcc の 202 行で定義されています。
参照先 osl::NumEffectState::allEffectAt(), osl::alt(), osl::PieceMask::any(), osl::BISHOP, osl::Piece::canMoveOn(), osl::NumEffectState::effectSetAt(), osl::NumEffectState::findLongAttackAt(), osl::NumEffectState::hasEffectByPiece(), osl::SimpleState::hasPieceOnStand(), osl::inverse(), osl::Piece::isEmpty(), osl::Square::isOnBoard(), osl::Piece::isOnBoardByOwner(), osl::SimpleState::isPawnMaskSet(), osl::Square::isUD(), osl::SimpleState::kingSquare(), osl::LANCE, osl::NumEffectState::longEffectAt(), osl::Piece::number(), osl::PAWN, osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::NumEffectState::piecesOnBoard(), osl::NumEffectState::pinOrOpen(), osl::Piece::ptype(), osl::ROOK, osl::Piece::square(), osl::PieceMask::test(), osl::Square::uintValue(), と osl::Square::x().
void osl::move_generator::detail::generateDrop | ( | Square | target, | |
Action & | action, | |||
int | spaceMask, | |||
osl::Ptype | T, | |||
int | dirMask, | |||
Offset | offset | |||
) |
addEffectWithEffect.tcc の 360 行で定義されています。
void osl::move_generator::detail::generateDropBishop | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
Square | ul, | |||
Square | dr, | |||
Square | ur, | |||
Square | dl | |||
) |
allEmpty - shadow attackを生成する場合は,posがemptyでないこともある.
addEffectWithEffect.tcc の 853 行で定義されています。
参照先 osl::BISHOP, osl::Piece::isEmpty(), と osl::SimpleState::pieceAt().
void osl::move_generator::detail::generateDropDir | ( | Square | target, | |
Action & | action, | |||
int | spaceMask, | |||
osl::Ptype | T | |||
) |
addEffectWithEffect.tcc の 368 行で定義されています。
void osl::move_generator::detail::generateDropGold | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
int | spaces | |||
) |
addEffectWithEffect.tcc の 824 行で定義されています。
参照先 osl::D, osl::GOLD, osl::SimpleState::hasPieceOnStand(), osl::L, と osl::UR.
void osl::move_generator::detail::generateDropRook | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
Square | l, | |||
Square | r, | |||
Square | d, | |||
Square | u | |||
) |
addEffectWithEffect.tcc の 874 行で定義されています。
参照先 osl::Piece::isEmpty(), osl::SimpleState::pieceAt(), と osl::ROOK.
void osl::move_generator::detail::generateDropSilver | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
int | spaces | |||
) |
addEffectWithEffect.tcc の 837 行で定義されています。
参照先 osl::DL, osl::SimpleState::hasPieceOnStand(), osl::SILVER, と osl::UR.
void osl::move_generator::detail::generateKing | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
bool & | hasPawnCheckmate | |||
) |
void osl::move_generator::detail::generateKnightAll | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action | |||
) |
addEffectWithEffect.tcc の 348 行で定義されています。
void osl::move_generator::detail::generateKnightDir | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action | |||
) |
addEffectWithEffect.tcc の 328 行で定義されています。
参照先 osl::NumEffectState::allEffectAt(), osl::Piece::canMoveOn(), osl::PieceMask::getMask(), osl::Piece::isEmpty(), osl::Square::isOnBoard(), osl::KNIGHT, osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::NumEffectState::pinOrOpen(), osl::NumEffectState::promotedPieces(), と osl::Piece::square().
void osl::move_generator::detail::generateMovePiecePtypeMask | ( | const NumEffectState & | state, | |
Piece | p, | |||
Square | to, | |||
Piece | toP, | |||
Action & | action, | |||
unsigned int | ptypeMask | |||
) |
マスtoに移動可能な駒pを移動する手を生成する. ptypeMaskで指定されたptypeになる場合以外は手を生成しない.
state | - 盤面 | |
p | - 利きを持つコマ | |
to | - 目的のマス | |
toP | - 目的のマスに現在ある駒(又は空白) | |
action | - 手生成のaction(典型的にはstoreかfilterつきstore) | |
ptypeMask | - 移動後の駒のptypeに対応するbitが1なら手を生成する should promoteは? 呼び出す時はpinnedの場合のunsafeなdirectionは排除済み |
addEffectWithEffect.tcc の 30 行で定義されています。
参照先 osl::Square::canPromote(), osl::canPromote(), osl::Piece::isOnBoardByOwner(), osl::SimpleState::pieceAt(), osl::promote(), osl::Piece::ptype(), と osl::Piece::square().
void osl::move_generator::detail::generateMoveToPtypeMask | ( | const NumEffectState & | state, | |
Square | to, | |||
Piece | toP, | |||
Action & | action, | |||
unsigned int | ptypeMask | |||
) |
void osl::move_generator::detail::generateMoveToPtypeMaskWithPieceMask | ( | const NumEffectState & | state, | |
Square | to, | |||
Piece | toP, | |||
Action & | action, | |||
unsigned int | ptypeMask, | |||
PieceMask | pieceMask | |||
) |
あるマスに利きを持つすべての駒の中で, ptypeMaskで指定されたptypeになる場合は移動する手を生成する
state | - 盤面 | |
to | - 目的のマス | |
toP | - 目的のマスに現在ある駒(又は空白) | |
action | - 手生成のaction(典型的にはstoreかfilterつきstore) | |
ptypeMask | - 移動後の駒のptypeに対応するbitが1なら手を生成する pinnedの場合は移動する手が1手もない場合もある. |
addEffectWithEffect.tcc の 58 行で定義されています。
参照先 osl::alt(), osl::PieceMask::any(), osl::Board_Table, osl::NumEffectState::hasEffectAt(), osl::KING, osl::SimpleState::kingSquare(), osl::SimpleState::pieceOf(), osl::NumEffectState::pinnedDir(), osl::NumEffectState::pinOrOpen(), osl::primDir(), osl::primDirUnsafe(), osl::PieceMask::reset(), osl::Piece::square(), と osl::PieceMask::test().
void osl::move_generator::detail::generateNotKing | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action | |||
) |
addEffectWithEffect.tcc の 940 行で定義されています。
参照先 osl::BISHOP, osl::BLACK, osl::D, osl::DL, osl::DR, osl::EMPTY_NUM, osl::PtypeTraits< BISHOP >::indexMin, osl::Piece::isOnBoardByOwner(), osl::Piece::isPromoted(), osl::L, osl::Square::makeDirect(), osl::Piece::number(), osl::SimpleState::pieceAt(), osl::R, osl::PieceMask::reset(), osl::ROOK, osl::U, osl::UL, と osl::UR.
void osl::move_generator::detail::generateOpenOrCapture | ( | const NumEffectState & | state, | |
Square | target, | |||
Piece | p, | |||
int | num, | |||
Action & | action | |||
) |
addEffectWithEffect.tcc の 373 行で定義されています。
参照先 osl::alt(), osl::BLACK, osl::Board_Table, osl::Piece::EMPTY(), osl::BoardTable::getShort8OffsetUnsafe(), osl::inverse(), osl::Piece::isPiece(), osl::NumEffectState::kingMobilityOfPlayer(), osl::NumEffectState::mobilityOf(), osl::SimpleState::pieceAt(), osl::Piece::pieceIsBlack(), osl::primDir(), osl::SILVER, osl::Piece::square(), と osl::Square::y().
void osl::move_generator::detail::generateRookLongMove | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action | |||
) |
addEffectWithEffect.tcc の 412 行で定義されています。
参照先 osl::alt(), osl::Piece::canMoveOn(), osl::D, osl::NumEffectState::effectSetAt(), osl::PtypeTraits< ROOK >::indexMin, osl::Square::isLR(), osl::Piece::isOnBoardByOwner(), osl::Piece::isPromoted(), osl::Square::isUD(), osl::Square::isULRD(), osl::NumEffectState::kingMobilityAbs(), osl::SimpleState::kingSquare(), osl::L, osl::Square::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::NumEffectState::pinOrOpen(), osl::R, osl::Piece::square(), osl::PieceMask::test(), osl::U, osl::Square::uintValue(), osl::Square::x(), と osl::Square::y().
void osl::move_generator::detail::generateRookLongMoveNotKing | ( | const NumEffectState & | state, | |
Square | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > const & | pieceMobility | |||
) |
addEffectWithEffect.tcc の 528 行で定義されています。
参照先 osl::Board_Table, osl::Piece::canMoveOn(), osl::D, osl::NumEffectState::effectSetAt(), osl::BoardTable::getShort8Unsafe(), osl::PtypeTraits< ROOK >::indexMin, osl::Piece::isOnBoardByOwner(), osl::Piece::isPromoted(), osl::Square::isULRD(), osl::L, osl::Square::makeDirect(), osl::Square::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::NumEffectState::pin(), osl::NumEffectState::pinnedDir(), osl::primDir(), osl::primDirUnsafe(), osl::R, osl::Piece::square(), osl::PieceMask::test(), osl::U, osl::Square::uintValue(), osl::Square::x(), と osl::Square::y().