関数 | |
template<osl::Player P, class Action > | |
void | generateMovePiecePtypeMask (const NumEffectState &state, Piece p, Position to, Piece toP, Action &action, unsigned int ptypeMask) |
マスtoに移動可能な駒pを移動する手を生成する. ptypeMaskで指定されたptypeになる場合以外は手を生成しない. | |
template<osl::Player P, class Action > | |
void | generateMoveToPtypeMaskWithPieceMask (const NumEffectState &state, Position to, Piece toP, Action &action, unsigned int ptypeMask, PieceMask pieceMask) |
あるマスに利きを持つすべての駒の中で, ptypeMaskで指定されたptypeになる場合は移動する手を生成する | |
template<osl::Player P, class Action > | |
void | generateMoveToPtypeMask (const NumEffectState &state, Position to, Piece toP, Action &action, unsigned int ptypeMask) |
template<osl::Player P> | |
bool | blockingU (const NumEffectState &state, Position pos) |
敵玉の前に歩を置いた場合に遮った利きで敵玉にlibertyが生まれるかどうか? | |
template<osl::Player P, int DirType, class Action > | |
void | generateDir (const NumEffectState &state, Position 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, Position target, Action &action, bool &hasPawnCheckmate) |
template<osl::Player P, int DirType, class Action > | |
void | generateDirNotKing (const NumEffectState &state, Position 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, Position 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, Position target, Action &action) |
template<osl::Player P, class Action > | |
void | generateKnightAll (const NumEffectState &state, Position target, Action &action) |
template<osl::Player P, class Action > | |
void | generateDrop (Position target, Action &action, int spaceMask, osl::Ptype T, int dirMask, Offset offset) |
template<osl::Player P, class Action , Direction Dir> | |
void | generateDropDir (Position target, Action &action, int spaceMask, osl::Ptype T) |
template<Player P, class Action , bool mustCareSilver> | |
void | generateOpenOrCapture (const NumEffectState &state, Position target, Piece p, int num, Action &action) |
template<osl::Player P, class Action > | |
void | generateRookLongMove (const NumEffectState &state, Position target, Action &action) |
template<osl::Player P, class Action > | |
void | generateRookLongMoveNotKing (const NumEffectState &state, Position target, Action &action, CArray< unsigned char, 8 > const &pieceMobility) |
template<Player P, Ptype T, class Action > | |
void | generateBishopLongMove (const NumEffectState &state, Position target, Action &action, Piece p, int num) |
template<osl::Player P, Ptype T, class Action > | |
void | generateBishopLongMoveNotKing (const NumEffectState &state, Position target, Action &action, CArray< unsigned char, 8 > const &pieceMobility, Piece p, int num) |
template<Player P, class Action > | |
void | generateDropGold (const NumEffectState &state, Position target, Action &action, int spaces) |
template<Player P, class Action > | |
void | generateDropSilver (const NumEffectState &state, Position target, Action &action, int spaces) |
template<Player P, class Action , bool allEmpty> | |
void | generateDropBishop (const NumEffectState &state, Position target, Action &action, Position ul, Position dr, Position ur, Position dl) |
allEmpty - shadow attackを生成する場合は,posがemptyでないこともある. | |
template<Player P, class Action , bool allEmpty> | |
void | generateDropRook (const NumEffectState &state, Position target, Action &action, Position l, Position r, Position d, Position u) |
template<osl::Player P, class Action > | |
void | generateKing (const NumEffectState &state, Position target, Action &action, bool &hasPawnCheckmate) |
template<osl::Player P, class Action > | |
void | generateNotKing (const NumEffectState &state, Position target, Action &action) |
bool osl::move_generator::detail::blockingU | ( | const NumEffectState & | state, | |
Position | pos | |||
) | [inline] |
敵玉の前に歩を置いた場合に遮った利きで敵玉にlibertyが生まれるかどうか?
addEffectWithEffect.tcc の 92 行で定義されています。
参照先 osl::BLACK, osl::Board_Table, osl::Piece::canMoveOn(), osl::BoardTable::getShortOffset(), と osl::Position::y().
void osl::move_generator::detail::generateBishopLongMove | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
Piece | p, | |||
int | num | |||
) | [inline] |
addEffectWithEffect.tcc の 617 行で定義されています。
参照先 osl::BISHOP, osl::Piece::canMoveOn(), osl::DL, osl::DR, osl::Position::isOnBoard(), osl::Position::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::Piece::position(), osl::Position::uintValue(), osl::UL, osl::UR, osl::Position::x(), と osl::Position::y().
void osl::move_generator::detail::generateBishopLongMoveNotKing | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > const & | pieceMobility, | |||
Piece | p, | |||
int | num | |||
) | [inline] |
addEffectWithEffect.tcc の 712 行で定義されています。
参照先 osl::Piece::canMoveOn(), osl::DL, osl::DR, osl::Position::isOnBoard(), osl::Position::makeDirect(), osl::Position::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::PBISHOP, osl::Piece::position(), osl::Position::uintValue(), osl::UL, osl::UR, osl::Position::x(), と osl::Position::y().
void osl::move_generator::detail::generateDir | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
bool & | hasPawnCheckmate | |||
) | [inline] |
addEffectWithEffect.tcc の 183 行で定義されています。
void osl::move_generator::detail::generateDir | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
bool & | hasPawnCheckmate, | |||
Offset | dirOffset, | |||
Direction | Dir, | |||
Direction | primDir, | |||
int | ptypeMaskNotKing | |||
) | [inline] |
int DirType : 0 - U 1 - LRD 2 - UL,UR,DL,DR dirOffset = DirectionPlayerTraits<Dir,P>::offset()
addEffectWithEffect.tcc の 120 行で定義されています。
参照先 osl::Piece::EMPTY(), osl::Piece::isEmpty(), osl::Position::isOnBoard(), osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::PAWN, osl::Piece::position(), と osl::Position::x().
void osl::move_generator::detail::generateDirNotKing | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > & | pieceMobility, | |||
int & | spaces, | |||
PieceMask const & | notPieceMask | |||
) | [inline] |
addEffectWithEffect.tcc の 306 行で定義されています。
void osl::move_generator::detail::generateDirNotKing | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > & | pieceMobility, | |||
int & | spaces, | |||
PieceMask const & | notPieceMask, | |||
Offset | dirOffset, | |||
Direction | Dir, | |||
Direction | primDir, | |||
int | ptypeMask, | |||
Direction | dirByBlack | |||
) | [inline] |
int DirType : 0 - U 1 - LRD 2 - UL,UR,DL,DR dirOffset = DirectionPlayerTraits<Dir,P>::offset()
addEffectWithEffect.tcc の 195 行で定義されています。
参照先 osl::BISHOP, osl::Piece::canMoveOn(), osl::inverse(), osl::Piece::isEmpty(), osl::Position::isOnBoard(), osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::PAWN, osl::Piece::position(), osl::ROOK, osl::Position::uintValue(), と osl::Position::x().
void osl::move_generator::detail::generateDrop | ( | Position | target, | |
Action & | action, | |||
int | spaceMask, | |||
osl::Ptype | T, | |||
int | dirMask, | |||
Offset | offset | |||
) | [inline] |
addEffectWithEffect.tcc の 345 行で定義されています。
void osl::move_generator::detail::generateDropBishop | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
Position | ul, | |||
Position | dr, | |||
Position | ur, | |||
Position | dl | |||
) | [inline] |
allEmpty - shadow attackを生成する場合は,posがemptyでないこともある.
addEffectWithEffect.tcc の 827 行で定義されています。
参照先 osl::BISHOP.
void osl::move_generator::detail::generateDropDir | ( | Position | target, | |
Action & | action, | |||
int | spaceMask, | |||
osl::Ptype | T | |||
) | [inline] |
addEffectWithEffect.tcc の 353 行で定義されています。
void osl::move_generator::detail::generateDropGold | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
int | spaces | |||
) | [inline] |
void osl::move_generator::detail::generateDropRook | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
Position | l, | |||
Position | r, | |||
Position | d, | |||
Position | u | |||
) | [inline] |
addEffectWithEffect.tcc の 848 行で定義されています。
参照先 osl::ROOK.
void osl::move_generator::detail::generateDropSilver | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
int | spaces | |||
) | [inline] |
addEffectWithEffect.tcc の 811 行で定義されています。
参照先 osl::DL, osl::DR, osl::SILVER, osl::U, osl::UL, と osl::UR.
void osl::move_generator::detail::generateKing | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
bool & | hasPawnCheckmate | |||
) | [inline] |
addEffectWithEffect.tcc の 868 行で定義されています。
参照先 osl::BISHOP, osl::D, osl::DL, osl::DR, osl::PtypeTraits< BISHOP >::indexMin, osl::Piece::isOnBoardByOwner(), osl::Piece::isPromoted(), osl::L, osl::R, osl::ROOK, osl::U, osl::UL, と osl::UR.
void osl::move_generator::detail::generateKnightAll | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
addEffectWithEffect.tcc の 333 行で定義されています。
参照先 osl::KNIGHT.
void osl::move_generator::detail::generateKnightDir | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
void osl::move_generator::detail::generateMovePiecePtypeMask | ( | const NumEffectState & | state, | |
Piece | p, | |||
Position | to, | |||
Piece | toP, | |||
Action & | action, | |||
unsigned int | ptypeMask | |||
) | [inline] |
マスtoに移動可能な駒pを移動する手を生成する. ptypeMaskで指定されたptypeになる場合以外は手を生成しない.
state | - 盤面 | |
p | - 利きを持つコマ | |
to | - 目的のマス | |
toP | - 目的のマスに現在ある駒(又は空白) | |
action | - 手生成のaction(典型的にはstoreかfilterつきstore) | |
ptypeMask | - 移動後の駒のptypeに対応するbitが1なら手を生成する should promoteは? |
addEffectWithEffect.tcc の 30 行で定義されています。
参照先 osl::Position::canPromote(), osl::canPromote(), osl::Piece::isOnBoardByOwner(), osl::Piece::position(), osl::promote(), と osl::Piece::ptype().
void osl::move_generator::detail::generateMoveToPtypeMask | ( | const NumEffectState & | state, | |
Position | to, | |||
Piece | toP, | |||
Action & | action, | |||
unsigned int | ptypeMask | |||
) | [inline] |
addEffectWithEffect.tcc の 79 行で定義されています。
void osl::move_generator::detail::generateMoveToPtypeMaskWithPieceMask | ( | const NumEffectState & | state, | |
Position | to, | |||
Piece | toP, | |||
Action & | action, | |||
unsigned int | ptypeMask, | |||
PieceMask | pieceMask | |||
) | [inline] |
あるマスに利きを持つすべての駒の中で, ptypeMaskで指定されたptypeになる場合は移動する手を生成する
state | - 盤面 | |
to | - 目的のマス | |
toP | - 目的のマスに現在ある駒(又は空白) | |
action | - 手生成のaction(典型的にはstoreかfilterつきstore) | |
ptypeMask | - 移動後の駒のptypeに対応するbitが1なら手を生成する pinnedの場合は移動する手が1手もない場合もある. |
addEffectWithEffect.tcc の 58 行で定義されています。
参照先 osl::Board_Table, osl::KING, osl::Piece::position(), osl::primDir(), と osl::primDirUnsafe().
void osl::move_generator::detail::generateNotKing | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
void osl::move_generator::detail::generateOpenOrCapture | ( | const NumEffectState & | state, | |
Position | target, | |||
Piece | p, | |||
int | num, | |||
Action & | action | |||
) | [inline] |
void osl::move_generator::detail::generateRookLongMove | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
addEffectWithEffect.tcc の 397 行で定義されています。
参照先 osl::Piece::canMoveOn(), osl::D, osl::PtypeTraits< ROOK >::indexMin, osl::Position::isLR(), osl::Piece::isOnBoardByOwner(), osl::Piece::isPromoted(), osl::Position::isUD(), osl::Position::isULRD(), osl::L, osl::Position::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::Piece::position(), osl::PROOK, osl::R, osl::ROOK, osl::U, osl::Position::uintValue(), osl::Position::x(), と osl::Position::y().
void osl::move_generator::detail::generateRookLongMoveNotKing | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action, | |||
CArray< unsigned char, 8 > const & | pieceMobility | |||
) | [inline] |
addEffectWithEffect.tcc の 513 行で定義されています。
参照先 osl::Piece::canMoveOn(), osl::D, osl::PtypeTraits< ROOK >::indexMin, osl::Piece::isOnBoardByOwner(), osl::Piece::isPromoted(), osl::Position::isULRD(), osl::L, osl::Position::makeDirect(), osl::Position::makeNoCheck(), osl::eval::max(), osl::eval::min(), osl::Piece::position(), osl::PROOK, osl::R, osl::ROOK, osl::U, osl::Position::uintValue(), osl::Position::x(), と osl::Position::y().