利きを持つ局面
#include <numEffectState.h>
Public メソッド | |
NumEffectState (const SimpleState &st=SimpleState(HIRATE)) | |
~NumEffectState () | |
void | copyFrom (const NumEffectState &src) |
主要部分を高速にコピーする. | |
void | copyFrom (const SimpleState &src) |
bool | isConsistent (bool showError=true) const |
bool | isConsistent (const NumEffectState &prev, Move moved, bool show_error=true) const |
局面更新に関する一貫性をテスト | |
void | showEffect (std::ostream &os) const |
const PieceMask & | piecesOnBoard (Player p) const |
const PieceMask | promotedPieces () const |
const PieceMask | pin (Player king) const |
const PieceMask | checkShadow (Player attack) const |
attack の駒で動くと開き王手になる可能性がある集合 | |
PieceMask | pinOrOpen (Player king) const |
uint64_t | Iking8Info (Player king) const |
const checkmate::King8Info | king8Info (Player king) const |
bool | inCheck (Player P) const |
Pの玉が王手状態. | |
bool | inCheck () const |
手番の玉が王手状態 | |
bool | inUnblockableCheck (Player target) const |
target の王に合駒可能でない王手がかかっているかどうか. | |
const EffectedNumTable & | longEffectNumTable () const |
const PieceMask | effectedMask (Player pl) const |
pl からの利きが(1つ以上)ある駒一覧 | |
const PieceMask | effectedChanged (Player pl) const |
前の指手でeffectedMask(pl)が変化したか. | |
bool | hasChangedEffects () const |
const BoardMask | changedEffects (Player pl) const |
const BoardMask | changedEffects () const |
const NumBitmapEffect | changedPieces () const |
template<Ptype PTYPE> | |
bool | longEffectChanged () const |
template<Ptype PTYPE> | |
bool | anyEffectChanged () const |
const Piece | findThreatenedPiece (Player P) const |
取られそうなPの駒で価値が最大のもの | |
bool | isOnBoardNum (int num) const |
Square | mobilityOf (Direction d, int num) const |
Square | mobilityOf (Direction d, Piece p) const |
Square | kingMobilityAbs (Player p, Direction d) const |
Square | kingMobilityOfPlayer (Player p, Direction d) const |
玉がd方向にどこまで動けるかを返す | |
template<Player P> | |
Direction | pinnedDir (Piece p) const |
pinされた駒がPのKingから見てどの方向か? Pから見たdirectionを返す | |
Direction | pinnedDir (Piece p) const |
template<Player P> | |
bool | pinnedCanMoveTo (Piece p, Square to) const |
pinされた駒pがtoに動けるか? pinに関係がなければtoへ動けるという前提 | |
bool | pinnedCanMoveTo (Piece p, Square to) const |
template<Player P> | |
Piece | pinAttacker (Piece pinned) const |
Pのpinされた駒から,そのpinの原因となっている長い利きを持つ駒を得る.. | |
Piece | pinAttacker (Piece pinned) const |
const NumBitmapEffect | effectSetAt (Square sq) const |
int | countEffect (Player player, Square target) const |
利きの数を数える. | |
int | countEffect (Player player, Square target, PieceMask pins) const |
利きの数を数える. | |
template<Ptype PTYPE> | |
const mask_t | allEffectAt (Player P, Square target) const |
const mask_t | allEffectAt (Player P, Ptype ptype, Square target) const |
template<Ptype PTYPE> | |
const mask_t | longEffectAt (Square target) const |
template<Ptype PTYPE> | |
const mask_t | longEffectAt (Square target, Player owner) const |
const mask_t | longEffectAt (Square target) const |
const mask_t | longEffectAt (Square target, Player owner) const |
template<Player P> | |
bool | hasEffectAt (Square target) const |
対象とするマスにあるプレイヤーの利きがあるかどうか. | |
bool | hasEffectAt (Player player, Square target) const |
対象とするマスにあるプレイヤーの利きがあるかどうか. | |
template<Ptype PTYPE> | |
bool | hasLongEffectAt (Player P, Square to) const |
あるマスにPTYPEの長い利きがあるかどうか. | |
template<Ptype PTYPE> | |
bool | hasEffectByPtype (Player attack, Square target) const |
target に ptype の利きがあるか? 成不成を区別しない | |
template<Ptype PTYPE> | |
bool | hasEffectByPtypeStrict (Player attack, Square target) const |
target に ptype の利きがあるか? 成不成を区別 | |
template<Direction Dir, Player P> | |
bool | hasEffectInDirection (Square to) const |
あるマスにあるDirectionでの長い利きがあるかどうか. | |
bool | hasEffectNotBy (Player player, Piece piece, Square target) const |
対象とするマスにあるプレイヤーの(ただしある駒以外)利きがあるかどうか. | |
bool | hasEffectByNotPinnedAndKing (Player pl, Square target) const |
{pinされている駒, 玉以外}からの利きがある. | |
bool | hasEffectByNotPinned (Player pl, Square target) const |
pinされている駒以外からの利きがある. | |
bool | hasMultipleEffectAt (Player player, Square target) const |
二つ以上の駒から利きがある. | |
bool | hasEffectByPiece (Piece attack, Square target) const |
駒attack が target に利きを持つか (旧hasEffectToと統合) | |
bool | hasEffectIf (PtypeO ptypeo, Square attacker, Square target) const |
attackerにptypeoの駒がいると仮定した場合にtargetに利きがあるかどうか を stateをupdateしないで確かめる. | |
template<Player P> | |
bool | hasEffectByWithRemove (Square target, Square removed) const |
bool | hasEffectByWithRemove (Player player, Square target, Square removed) const |
template<Ptype PTYPE> | |
const Piece | findAttackAt (Player attack, Square target) const |
return a piece s.t. | |
template<Ptype PTYPE> | |
const Piece | findAttackAtStrict (Player attack, Square target) const |
const Piece | findLongAttackAt (Player owner, int piece, Direction d) const |
pieceのd方向から長い利きがある場合にその駒を返す。 | |
const Piece | findLongAttackAt (Player owner, Piece piece, Direction d) const |
const Piece | findLongAttackAt (Piece piece, Direction d) const |
const Piece | findLongAttackAt (Square square, Direction d) const |
const Piece | selectCheapPiece (PieceMask effect) const |
利きの中から安そうな駒を選ぶ | |
const Piece | findCheapAttack (Player P, Square square) const |
const Piece | findCheapAttackNotBy (Player P, Square square, const PieceMask &ignore) const |
const Piece | findAttackNotBy (Player P, Square square, const PieceMask &ignore) const |
template<Player P> | |
bool | findCheckPiece (Piece &attack_piece) const |
王手駒を探す | |
bool | hasEffectAt (Player P, Square target, Piece &attackerPiece) const |
template<Player P> | |
bool | hasEffectAt (Square target, Piece &attackerPiece) const |
bool | isSafeMove (Move move) const |
bool | isCheck (Move move) const |
bool | isPawnDropCheckmate (Move move) const |
bool | isDirectCheck (Move move) const |
bool | isOpenCheck (Move move) const |
template<bool show_error> | |
bool | isAlmostValidMove (Move move) const |
合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる. | |
bool | isAlmostValidMove (Move move, bool show_error=true) const |
合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる. | |
void | generateLegal (MoveVector &) const |
全ての合法手を生成する. | |
void | generateWithFullUnpromotions (MoveVector &) const |
打歩詰め絡み以外では有利にはならない手も含め, 全ての合法手を生成す る(MoveignoredUnpromoteも生成する). | |
void | generateAllUnsafe (MoveVector &) const |
自殺を含めてすべての手を生成 | |
void | makeMove (Move move) |
void | makeMovePass () |
template<class Function > | |
void | makeUnmakePass (Function &f) |
template<class Function > | |
void | makeUnmakeMove (Move move, Function &f) |
template<Player P, class Function > | |
void | makeUnmakeMove (Player2Type< P > player, Move move, Function &f) |
bool | wasCheckEvasion (Move last_move) const |
template<Player P, Ptype T, typename F > | |
void | forEachOnBoard (F &func) const |
T は isBasic でなくても動くが unpromote(T) の結果と同じ. | |
template<Player P, Ptype T, typename F > | |
void | forEachOnBoardPtypeStrict (F &func) const |
T の成不成を区別. | |
template<Player P, class Action > | |
void | forEachEffect (Square sq, Action &action) const |
sq への利きを持つ各駒に関して処理を行う. | |
template<Player P, class Action > | |
void | forEachEffect (Square sq, Action &action, const PieceMask &pin) const |
sq にある駒を取る move を生成して action の member を呼び出す. | |
template<Player P, class Action > | |
void | forEachEffectNotBy (Square sq, Piece piece, Action &action) const |
sq に移動する move を生成して action の member を呼び出す | |
template<Player P, Ptype Type, class Action > | |
void | forEachEffectOfPiece (Square pieceSquare, Action &action) const |
pieceSquareにある駒によって利きを受けるすべてのsquare (空白含む)について actionを実行する | |
template<class Action > | |
void | forEachEffectOfPiece (Piece piece, Action &action) const |
template<class Function , bool InterestEmpty> | |
void | forEachEffectOfPtypeO (Square, PtypeO, Function &f) const |
PtypeO が Square にいると仮定した時にの利きを列挙. | |
template<Player P, class Function , bool InterestEmpty> | |
void | forEachEffectOfPtypeO (Square, Ptype, Function &f) const |
template<Player P> | |
Piece | safeCaptureNotByKing (Square target, Piece king) const |
玉の素抜きなしに合法手でtargetに移動可能かを判定 | |
Piece | safeCaptureNotByKing (Player P, Square target) const |
template<class Action > | |
void | forEachEffect (Player P, Square pos, Action &a) const |
forEachEffect の Player のtemplate 引数を通常の引数にしたバージョン | |
void | findEffect (Player P, Square target, PieceVector &out) const |
target に利きのあるPieceをoutに格納する | |
Private 型 | |
typedef NumEffectState | state_t |
Private メソッド | |
template<Player P, class Action > | |
void | forEachEffect (const PieceMask &pieces, Square sq, Action &action) const |
template<Player P, Ptype Type, class Action , Direction Dir> | |
void | forEachEffectOfPieceDir (Square, Action &, Int2Type< false >) const |
template<Player P, Ptype Type, class Action , Direction Dir> | |
void | forEachEffectOfPieceDir (Square pieceSquare, Action &action, Int2Type< true >) const |
template<Player P, Ptype Type, class Action , Direction Dir> | |
void | forEachEffectOfPieceDir (Square pieceSquare, Action &action) const |
template<Player P, Ptype Type, class Action , Direction Dir> | |
void | forEachEffectOfPieceLongDir (Square, Action &, Int2Type< false >) const |
template<Player P, Ptype Type, class Action , Direction Dir> | |
void | forEachEffectOfPieceLongDir (Square pieceSquare, Action &action, Int2Type< true >) const |
template<Player P, Ptype Type, class Action , Direction Dir> | |
void | forEachEffectOfPieceLongDir (Square pieceSquare, Action &action) const |
void | doSimpleMove (Square from, Square to, int promoteMask) |
void | doDropMove (Square to, Ptype ptype) |
void | doCaptureMove (Square from, Square to, Piece target, int promoteMask) |
template<Player P, class Function > | |
void | doUndoSimpleMove (Player2Type< P > player, Square from, Square to, int promoteMask, Function &func) |
template<Player P> | |
void | prologueSimple (Player2Type< P >, Square from, Square to, int promoteMask, Piece &oldPiece, int &num, PtypeO &oldPtypeO, PtypeO &new_ptypeo, CArray< PieceMask, 2 > &pin_or_open_backup, KingMobility &king_mobility_backup, PieceMask &promoted_backup, CArray< PieceMask, 2 > &effected_mask_backup, CArray< PieceMask, 2 > &effected_changed_mask_backup, CArray< uint64_t, 2 > &king8infos_backup, MobilityTable &mobility_backup) |
void | epilogueSimple (Square from, Square to, Piece oldPiece, int num, PtypeO oldPtypeO, PtypeO newPtypeO, const CArray< PieceMask, 2 > &pin_or_open_backup, const KingMobility &king_mobility_backup, const PieceMask &promoted_backup, const CArray< PieceMask, 2 > &effected_mask_backup, const CArray< PieceMask, 2 > &effected_changed_mask_backup, const CArray< uint64_t, 2 > &king8infos_backup, const MobilityTable &mobility_backup) |
template<Player P, class Function > | |
void | doUndoDropMove (Player2Type< P > player, Square to, Ptype ptype, Function &func) |
template<Player P> | |
void | prologueDrop (Player2Type< P >, Square to, Ptype ptype, Piece &oldPiece, int &num, PtypeO &ptypeO, int &numIndex, mask_t &numMask, CArray< PieceMask, 2 > &pin_or_open_backup, KingMobility &king_mobility_backup, CArray< PieceMask, 2 > &effected_mask_backup, CArray< PieceMask, 2 > &effected_changed_mask_backup, CArray< uint64_t, 2 > &king8infos_backup, MobilityTable &mobility_backup) |
template<Player P> | |
void | epilogueDrop (Player2Type< P >, Square to, Ptype ptype, Piece oldPiece, int num, PtypeO ptypeO, int numIndex, mask_t numMask, const CArray< PieceMask, 2 > &pin_or_open_backup, const KingMobility &king_mobility_backup, const CArray< PieceMask, 2 > &effected_mask_backup, const CArray< PieceMask, 2 > &effected_changed_mask_backup, const CArray< uint64_t, 2 > &king8infos_backup, const MobilityTable &mobility_backup) |
template<Player P, class Function > | |
void | doUndoCaptureMove (Player2Type< P > player, Square from, Square to, Piece target, int promoteMask, Function &func) |
template<Player P> | |
void | prologueCapture (Player2Type< P >, Square from, Square to, Piece target, int promoteMask, Piece &oldPiece, PtypeO &oldPtypeO, PtypeO &capturePtypeO, PtypeO &new_ptypeo, int &num0, int &num1, int &num1Index, mask_t &num1Mask, CArray< PieceMask, 2 > &pin_or_open_backup, KingMobility &king_mobility_backup, PieceMask &promoted_backup, CArray< PieceMask, 2 > &effected_mask_backup, CArray< PieceMask, 2 > &effected_changed_mask_backup, CArray< uint64_t, 2 > &king8infos_backup, MobilityTable &mobility_backup) |
template<Player P> | |
void | epilogueCapture (Player2Type< P >, Square from, Square to, Piece target, Piece oldPiece, PtypeO oldPtypeO, PtypeO capturePtypeO, PtypeO newPtypeO, int num0, int num1, int num1Index, mask_t num1Mask, const CArray< PieceMask, 2 > &pin_or_open_backup, const KingMobility &king_mobility_backup, const PieceMask &promoted_backup, const CArray< PieceMask, 2 > &effected_mask_backup, const CArray< PieceMask, 2 > &effected_changed_mask_backup, const CArray< uint64_t, 2 > &king8infos_backup, const MobilityTable &mobility_backup) |
template<Direction DIR> | |
void | makePinOpenDir (Square target, PieceMask &pins, PieceMask const &onBoard, Player defense) |
void | recalcPinOpen (Square changed, Direction &lastDir, Player defense) |
PieceMask | makePinOpen (Square target, Player defense) |
void | makePinOpen (Player defense) |
template<Player P> | |
void | makeKing8Info () |
Private 変数 | |
effect::NumSimpleEffectTable | effects |
CArray< PieceMask, 2 > | pieces_onboard |
PieceMask | promoted |
成駒一覧 | |
CArray< PieceMask, 2 > | pin_or_open |
KingMobility | king_mobility |
CArray< uint64_t, 2 > | king8infos |
フレンド | |
bool | operator== (const NumEffectState &st1, const NumEffectState &st2) |
駒番に依存した局面(インスタンス)比較をする. |
利きを持つ局面
numEffectState.h の 30 行で定義されています。
typedef NumEffectState osl::NumEffectState::state_t [private] |
osl::SimpleStateを再定義しています。
numEffectState.h の 44 行で定義されています。
osl::NumEffectState::NumEffectState | ( | const SimpleState & | st = SimpleState(HIRATE) |
) | [explicit] |
numEffectState.cc の 61 行で定義されています。
参照先 osl::BLACK, osl::effect::NumSimpleEffectTable::effected_changed_mask, osl::effect::NumSimpleEffectTable::effected_mask, effects, hasEffectAt(), osl::indexToPlayer(), osl::SimpleState::isOnBoard(), osl::Piece::isOnBoard(), osl::Piece::isPromoted(), makePinOpen(), osl::Piece::owner(), osl::SimpleState::pieceOf(), pieces_onboard, promoted, osl::PieceMask::set(), osl::Piece::square(), と osl::WHITE.
参照元 copyFrom().
osl::NumEffectState::~NumEffectState | ( | ) |
numEffectState.cc の 95 行で定義されています。
numEffectState.cc の 907 行で定義されています。
参照先 osl::BISHOP, osl::GOLD, osl::KING, osl::KNIGHT, osl::LANCE, osl::PAWN, osl::PBISHOP, osl::PKNIGHT, osl::PLANCE, osl::PPAWN, osl::PROOK, osl::PSILVER, osl::ROOK, と osl::SILVER.
bool osl::NumEffectState::anyEffectChanged | ( | ) | const [inline] |
numEffectState.h の 159 行で定義されています。
参照先 changedPieces().
const BoardMask osl::NumEffectState::changedEffects | ( | ) | const [inline] |
numEffectState.h の 148 行で定義されています。
参照先 osl::BLACK, と osl::WHITE.
参照元 isConsistent(), prologueCapture(), prologueDrop(), と prologueSimple().
const BoardMask osl::NumEffectState::changedEffects | ( | Player | pl | ) | const [inline] |
numEffectState.h の 144 行で定義されています。
参照先 osl::effect::NumSimpleEffectTable::changedEffects(), effects, と hasChangedEffects().
参照元 osl::eval::ml::King25EffectEachBoth::evalWithUpdate(), osl::eval::ml::King25EmptySquareNoEffect::evalWithUpdate(), osl::eval::ml::KingXBlockedYBase::evalWithUpdateBang(), osl::eval::ml::King8EffectBase::evalWithUpdateCommon(), osl::progress::Effect5x3d::update(), osl::progress::Effect5x3WithBonus::update(), osl::progress::Effect5x3::update(), osl::progress::ml::NewProgress::updateMain(), osl::progress::ml::NewProgress::updateSub(), と osl::eval::ml::OpenMidEndingEval::updateSub().
const NumBitmapEffect osl::NumEffectState::changedPieces | ( | ) | const [inline] |
numEffectState.h の 152 行で定義されています。
参照先 osl::effect::NumSimpleEffectTable::changedPieces(), と effects.
参照元 anyEffectChanged(), isConsistent(), と longEffectChanged().
attack の駒で動くと開き王手になる可能性がある集合
numEffectState.h の 70 行で定義されています。
参照先 osl::alt(), piecesOnBoard(), と pin_or_open.
void osl::NumEffectState::copyFrom | ( | const SimpleState & | src | ) |
numEffectState.cc の 1048 行で定義されています。
参照先 copyFrom(), と NumEffectState().
void osl::NumEffectState::copyFrom | ( | const NumEffectState & | src | ) |
主要部分を高速にコピーする.
盤の外はコピーされない
numEffectState.cc の 932 行で定義されています。
参照先 osl::SimpleState::board, osl::effect::NumSimpleEffectTable::copyFrom(), effects, king8infos, king_mobility, osl::SimpleState::pawnMask, osl::SimpleState::pieces, pieces_onboard, pin_or_open, osl::SimpleState::player_to_move, promoted, osl::SimpleState::stand_count, osl::SimpleState::stand_mask, と osl::SimpleState::used_mask.
参照元 copyFrom(), osl::move_probability::StateInfo::finishUpdate(), と osl::usi::parse().
利きの数を数える.
targetが盤をはみ出してはいけない
numEffectState.h の 266 行で定義されています。
参照先 effectSetAt(), と osl::Square::isOnBoard().
参照元 osl::eval::ml::AttackMajorsInBase::addOne(), osl::move_probability::King5x5Ptype::addOne(), osl::move_probability::MoveInfo::adhocAdjustAttackCheckmateDefender(), osl::progress::Effect5x3WithBonus::attackEffect3(), osl::checkmate::attackProofCost(), osl::checkmate::detail::blockingDiagonalAttack(), osl::checkmate::detail::blockingVerticalAttack(), osl::checkmate::CheckmateIfCapture::cannotCapture(), osl::move_probability::Feature::classifyEffect9(), osl::rating::CountEffect2::count(), osl::eval::ml::King25Effect::countEffectAndPieces(), osl::eval::ml::King25EffectBoth::countEffectAndPiecesBoth(), osl::checkmate::ProofNumberTable::countLiberty(), osl::move_probability::CoverFork::defending(), osl::checkmate::FixedDepthSearcher::defenseEstimation(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::King25EffectEach< Stage >::effectState(), osl::eval::ml::King8EffectAll::effectState(), osl::eval::ml::King8Effect::effectState(), osl::eval::ml::KnightHead::eval(), osl::eval::ml::Promotion37::evalOne(), osl::effect_util::SendOffSquare::find(), osl::move_probability::BlockLong::findAll(), osl::move_probability::StateInfo::findCheckmateDefender(), osl::eval::See::findEffectPieces(), osl::eval::See::findEffectPiecesAfterMove(), osl::move_generator::Escape< Action >::generateBlocking(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDir(), osl::rating::PinAttack::index(), osl::progress::Effect5x3d::makeProgress(), osl::progress::Effect5x3::makeProgressArea(), osl::rating::PinAttack::match(), osl::move_probability::CoverPawn::match(), osl::move_probability::LongRecapture::match(), osl::move_probability::AttackFromOpposingSliders::match(), osl::checkmate::King8Info::moveCandidateDir(), osl::effect_util::SendOffSquare::onlyOneSupport(), osl::eval::ml::King8EffectBase::MakeEffectStateDefense::operator()(), osl::eval::ml::King8EffectBase::MakeEffectStateSimple::operator()(), osl::progress::ml::NewProgress::progressOne(), osl::progress::ml::NewProgress::promotion37One(), と osl::move_probability::StateInfo::updatePinnedGenerals().
int osl::NumEffectState::countEffect | ( | Player | player, | |
Square | target, | |||
PieceMask | pins | |||
) | const [inline] |
numEffectState.cc の 293 行で定義されています。
参照先 osl::BLACK, osl::PAWN, prologueDrop(), osl::SimpleState::setPawn(), と osl::SimpleState::turn().
参照元 makeMove().
numEffectState.cc の 232 行で定義されています。
参照先 osl::BLACK, osl::SimpleState::clearPawn(), osl::PtypeTraits< PAWN >::indexLimit, prologueSimple(), と osl::SimpleState::turn().
参照元 makeMove().
前の指手でeffectedMask(pl)が変化したか.
取られた駒は現在の実装ではリストされないようだ.
numEffectState.h の 137 行で定義されています。
参照先 osl::effect::NumSimpleEffectTable::effected_changed_mask, と effects.
参照元 osl::move_probability::StateInfo::finishUpdate(), isConsistent(), と osl::eval::ml::NonPawnAttackedPtype::updateChanged().
pl からの利きが(1つ以上)ある駒一覧
numEffectState.h の 130 行で定義されています。
参照先 osl::effect::NumSimpleEffectTable::effected_mask, と effects.
参照元 osl::eval::ml::MajorCheckWithCapture::addOne(), osl::eval::ml::King25EffectBoth::countEffectAndPiecesBoth(), osl::eval::ml::KnightFork::eval(), osl::eval::ml::BishopRookFork::eval(), osl::eval::ml::NonPawnAttackedPtype::eval(), osl::eval::ml::NonPawnAttacked::eval(), osl::eval::ml::KingPieceRelativeNoSupport::eval(), osl::eval::ml::NonPawnAttackedPtypePair::evalOne(), osl::eval::ml::King25Effect3::evalOne(), osl::eval::ml::KnightFork::evalWithUpdate(), osl::eval::ml::KingPieceRelativeNoSupport::evalWithUpdate(), osl::eval::ml::NonPawnAttackedPtype::evalWithUpdateBang(), osl::eval::ml::NonPawnAttacked::evalWithUpdateBang(), findThreatenedPiece(), osl::move_probability::StateInfo::finishUpdate(), osl::rating::ImmediateAddSupport::index(), isConsistent(), osl::move_probability::CoverFork::match(), osl::progress::ml::NewProgress::updateNonPawnAttackedPtypePairOne(), osl::progress::ml::NewProgress::updatePawnFacing(), osl::move_probability::StateInfo::updatePinnedGenerals(), と osl::eval::ml::OpenMidEndingEval::updateSub().
const NumBitmapEffect osl::NumEffectState::effectSetAt | ( | Square | sq | ) | const [inline] |
numEffectState.h の 258 行で定義されています。
参照先 effects, と osl::effect::NumSimpleEffectTable::effectSetAt().
参照元 allEffectAt(), osl::move_generator::escape::blockByMoveOne(), osl::checkmate::detail::blockingDiagonalAttack(), osl::move_generator::detail::blockingU(), osl::checkmate::detail::blockingVerticalAttack(), countEffect(), osl::eval::ml::King25Effect::countEffectAndPieces(), osl::eval::ml::King25EffectBoth::countEffectAndPiecesBoth(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::King25EffectEachBoth::effectStateIndex3(), osl::move_generator::Capture< Action >::escapeByCapture(), osl::eval::ml::NonPawnAttackedPtype::eval(), osl::eval::ml::RookPromoteDefense::eval(), osl::eval::ml::King25Effect3::evalOne(), osl::eval::ml::King25EmptySquareNoEffect::evalOne(), osl::eval::ml::NonPawnAttackedPtype::evalWithUpdateBang(), osl::move_probability::ToEffect::find(), findAttackNotBy(), findCheapAttack(), findCheapAttackNotBy(), forEachEffect(), forEachEffectNotBy(), osl::move_generator::Capture< Action >::generate(), osl::move_generator::detail::generateBishopLongMove(), osl::move_generator::detail::generateBishopLongMoveNotKing(), osl::move_generator::detail::generateDirNotKing(), osl::move_generator::detail::generateMoveToPtypeMask(), osl::move_generator::detail::generateRookLongMove(), osl::move_generator::detail::generateRookLongMoveNotKing(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDir(), osl::effect_util::AdditionalEffect::hasEffect(), hasEffectAt(), hasEffectByNotPinned(), hasEffectByNotPinnedAndKing(), hasEffectByPiece(), hasEffectInDirection(), hasEffectNotBy(), osl::checkmate::detail::hasKnightCheckmate(), hasMultipleEffectAt(), isConsistent(), longEffectAt(), osl::progress::Effect5x3WithBonus::makeEffectMask(), osl::move_probability::ToEffectLong::match(), prologueCapture(), showEffect(), osl::checkmate::detail::slowCheckDrop(), osl::checkmate::ImmediateCheckmate::slowHasCheckmateMoveDirPiece(), osl::progress::ml::NewProgress::updateAttack5x5PiecesAndState(), と osl::eval::ml::NonPawnAttackedPtype::updateChanged().
void osl::NumEffectState::epilogueCapture | ( | Player2Type< P > | , | |
Square | from, | |||
Square | to, | |||
Piece | target, | |||
Piece | oldPiece, | |||
PtypeO | oldPtypeO, | |||
PtypeO | capturePtypeO, | |||
PtypeO | newPtypeO, | |||
int | num0, | |||
int | num1, | |||
int | num1Index, | |||
mask_t | num1Mask, | |||
const CArray< PieceMask, 2 > & | pin_or_open_backup, | |||
const KingMobility & | king_mobility_backup, | |||
const PieceMask & | promoted_backup, | |||
const CArray< PieceMask, 2 > & | effected_mask_backup, | |||
const CArray< PieceMask, 2 > & | effected_changed_mask_backup, | |||
const CArray< uint64_t, 2 > & | king8infos_backup, | |||
const MobilityTable & | mobility_backup | |||
) | [private] |
numEffectState.cc の 626 行で定義されています。
参照先 osl::alt(), osl::effect::NumSimpleEffectTable::effected_changed_mask, osl::effect::NumSimpleEffectTable::effected_mask, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::getPtype(), osl::effect::NumSimpleEffectTable::invalidateChangedEffects(), king8infos, king_mobility, osl::effect::NumSimpleEffectTable::mobilityTable, pieces_onboard, pin_or_open, promoted, osl::SimpleState::setBoard(), osl::SimpleState::setPieceOf(), osl::SimpleState::stand_count, osl::SimpleState::standMask(), osl::unpromote(), と osl::PieceMask::xorMask().
参照元 doUndoCaptureMove().
void osl::NumEffectState::epilogueDrop | ( | Player2Type< P > | , | |
Square | to, | |||
Ptype | ptype, | |||
Piece | oldPiece, | |||
int | num, | |||
PtypeO | ptypeO, | |||
int | numIndex, | |||
mask_t | numMask, | |||
const CArray< PieceMask, 2 > & | pin_or_open_backup, | |||
const KingMobility & | king_mobility_backup, | |||
const CArray< PieceMask, 2 > & | effected_mask_backup, | |||
const CArray< PieceMask, 2 > & | effected_changed_mask_backup, | |||
const CArray< uint64_t, 2 > & | king8infos_backup, | |||
const MobilityTable & | mobility_backup | |||
) | [private] |
numEffectState.cc の 503 行で定義されています。
参照先 osl::effect::NumSimpleEffectTable::effected_changed_mask, osl::effect::NumSimpleEffectTable::effected_mask, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::Piece::EMPTY(), osl::effect::NumSimpleEffectTable::invalidateChangedEffects(), king8infos, king_mobility, osl::effect::NumSimpleEffectTable::mobilityTable, pieces_onboard, pin_or_open, osl::SimpleState::setBoard(), osl::SimpleState::setPieceOf(), osl::SimpleState::stand_count, osl::SimpleState::standMask(), と osl::PieceMask::xorMask().
参照元 doUndoDropMove().
void osl::NumEffectState::epilogueSimple | ( | Square | from, | |
Square | to, | |||
Piece | oldPiece, | |||
int | num, | |||
PtypeO | oldPtypeO, | |||
PtypeO | newPtypeO, | |||
const CArray< PieceMask, 2 > & | pin_or_open_backup, | |||
const KingMobility & | king_mobility_backup, | |||
const PieceMask & | promoted_backup, | |||
const CArray< PieceMask, 2 > & | effected_mask_backup, | |||
const CArray< PieceMask, 2 > & | effected_changed_mask_backup, | |||
const CArray< uint64_t, 2 > & | king8infos_backup, | |||
const MobilityTable & | mobility_backup | |||
) | [private] |
numEffectState.cc の 401 行で定義されています。
参照先 osl::effect::NumSimpleEffectTable::doBlockAt(), osl::effect::NumSimpleEffectTable::doEffect(), osl::effect::NumSimpleEffectTable::effected_changed_mask, osl::effect::NumSimpleEffectTable::effected_mask, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::Piece::EMPTY(), osl::effect::NumSimpleEffectTable::invalidateChangedEffects(), king8infos, king_mobility, osl::effect::NumSimpleEffectTable::mobilityTable, pin_or_open, promoted, osl::SimpleState::setBoard(), と osl::SimpleState::setPieceOf().
参照元 doUndoSimpleMove().
const Piece osl::NumEffectState::findAttackAt | ( | Player | attack, | |
Square | target | |||
) | const [inline] |
return a piece s.t.
owner == attack, ptype == PTYPE, has effect on target. return Piece::EMPTY() otherwise
numEffectState.h の 503 行で定義されています。
参照先 osl::Piece::EMPTY(), と osl::SimpleState::pieceOf().
参照元 osl::checkmate::OracleAdjust::attack(), osl::rating::DefenseKing8::blocking(), osl::rating::Block::count(), と osl::rating::PatternBlock::find().
const Piece osl::NumEffectState::findAttackAtStrict | ( | Player | attack, | |
Square | target | |||
) | const [inline] |
numEffectState.h の 511 行で定義されています。
参照先 osl::Piece::EMPTY(), osl::PieceMask::getMask(), osl::isPromoted(), osl::SimpleState::pieceOf(), と promoted.
const Piece osl::NumEffectState::findAttackNotBy | ( | Player | P, | |
Square | square, | |||
const PieceMask & | ignore | |||
) | const [inline] |
numEffectState.h の 575 行で定義されています。
参照先 effectSetAt(), osl::Piece::EMPTY(), osl::SimpleState::pieceOf(), osl::SimpleState::pieces, と piecesOnBoard().
P | - 利きをつけている側のプレイヤ | |
square | - 調査する場所 |
numEffectState.h の 560 行で定義されています。
参照先 effectSetAt(), piecesOnBoard(), と selectCheapPiece().
参照元 osl::eval::ml::AttackMajorsInBase::addOne(), osl::move_probability::MoveInfo::adhocAdjustBishopFork(), osl::move_probability::MoveInfo::adhocAdjustBreakThreatmate(), osl::move_probability::MoveInfo::adhocAdjustSlider(), osl::move_probability::CoverFork::defending(), osl::eval::ml::Promotion37::evalOne(), osl::move_probability::StateInfo::findCheckmateDefender(), osl::rating::PtypeAttackedGroup::findMatch(), osl::move_generator::Capture< Action >::generate1(), osl::eval::ml::NonPawnAttackedPtypePair::index1(), osl::move_probability::EscapeThreatened::match(), osl::move_probability::LongRecapture::match(), osl::move_probability::AttackFromOpposingSliders::match(), osl::move_probability::FromEffect::match(), osl::rating::PtypeAttacked::match(), osl::progress::ml::NewProgress::promotion37One(), と osl::move_probability::StateInfo::updatePinnedGenerals().
const Piece osl::NumEffectState::findCheapAttackNotBy | ( | Player | P, | |
Square | square, | |||
const PieceMask & | ignore | |||
) | const [inline] |
P | - 利きをつけている側のプレイヤ | |
square | - 調査する場所 |
numEffectState.h の 569 行で定義されています。
参照先 effectSetAt(), osl::SimpleState::pieces, piecesOnBoard(), と selectCheapPiece().
bool osl::NumEffectState::findCheckPiece | ( | Piece & | attack_piece | ) | const [inline] |
王手駒を探す
attack_piece | 一つの駒による王手の場合はattck_pieceにその駒を入れる 複数の駒による王手の場合はPieceEMPTY()を入れる | |
P(template) | 玉 |
numEffectState.h の 593 行で定義されています。
void osl::NumEffectState::findEffect | ( | Player | P, | |
Square | target, | |||
PieceVector & | out | |||
) | const |
target に利きのあるPieceをoutに格納する
numEffectState.cc の 1119 行で定義されています。
参照先 forEachEffect().
参照元 osl::effect_util::ShadowEffect::count(), osl::effect_util::AdditionalEffect::count(), と osl::effect_util::AdditionalEffect::find().
numEffectState.h の 547 行で定義されています。
numEffectState.h の 542 行で定義されています。
参照先 findLongAttackAt(), osl::Piece::isPiece(), と osl::Piece::owner().
const Piece osl::NumEffectState::findLongAttackAt | ( | Player | owner, | |
int | piece, | |||
Direction | d | |||
) | const [inline] |
pieceのd方向から長い利きがある場合にその駒を返す。
d | piece からみた向き |
numEffectState.h の 526 行で定義されています。
参照先 osl::BLACK, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::Piece::EMPTY(), osl::EMPTY_NUM, osl::inverse(), と osl::SimpleState::pieceOf().
参照元 findLongAttackAt(), osl::move_generator::detail::generateDirNotKing(), と osl::move_probability::StateInfo::makePinOfLongPieces().
const Piece osl::NumEffectState::findLongAttackAt | ( | Player | owner, | |
Piece | piece, | |||
Direction | d | |||
) | const [inline] |
numEffectState.h の 536 行で定義されています。
参照先 findLongAttackAt(), osl::Piece::isPiece(), osl::Piece::number(), と osl::Piece::owner().
const osl::Piece osl::NumEffectState::findThreatenedPiece | ( | Player | P | ) | const |
取られそうなPの駒で価値が最大のもの
numEffectState.cc の 139 行で定義されています。
参照先 osl::alt(), osl::PieceMask::clearBit(), effectedMask(), osl::Piece::EMPTY(), osl::PieceMask::getMask(), osl::PtypeTable::getMaskLow(), osl::PieceTable::getPtypeOf(), inCheck(), osl::PtypeTraits< KNIGHT >::indexMin, osl::LANCE, osl::eval::max(), osl::Piece_Table, osl::SimpleState::pieceOf(), osl::SimpleState::pieces, piecesOnBoard(), promoted, promotedPieces(), osl::Ptype_Table, と osl::PieceMask::selectBit().
void osl::NumEffectState::forEachEffect | ( | Square | sq, | |
Action & | action | |||
) | const [inline] |
sq への利きを持つ各駒に関して処理を行う.
action | たとえば AlwaysMoveAction |
numEffectState.h の 784 行で定義されています。
参照先 effectSetAt(), と piecesOnBoard().
void osl::NumEffectState::forEachEffect | ( | Square | sq, | |
Action & | action, | |||
const PieceMask & | pin | |||
) | const [inline] |
sq にある駒を取る move を生成して action の member を呼び出す.
pin | 無視する駒 | |
action | たとえば AlwaysMoveAction |
numEffectState.h の 795 行で定義されています。
参照先 effectSetAt(), と piecesOnBoard().
void osl::NumEffectState::forEachEffect | ( | Player | P, | |
Square | pos, | |||
Action & | a | |||
) | const [inline] |
forEachEffect の Player のtemplate 引数を通常の引数にしたバージョン
P | 探す対象の駒の所有者 | |
pos | に利きのある駒を探す |
numEffectState.h の 888 行で定義されています。
参照先 osl::BLACK.
void osl::NumEffectState::forEachEffectNotBy | ( | Square | sq, | |
Piece | piece, | |||
Action & | action | |||
) | const [inline] |
sq に移動する move を生成して action の member を呼び出す
action | たとえば AlwayMoveAction | |
piece | これ以外の駒を使う |
numEffectState.h の 808 行で定義されています。
参照先 effectSetAt(), osl::Piece::number(), osl::SimpleState::pieces, piecesOnBoard(), と osl::PieceMask::reset().
void osl::NumEffectState::forEachEffectOfPiece | ( | Square | pieceSquare, | |
Action & | action | |||
) | const |
pieceSquareにある駒によって利きを受けるすべてのsquare (空白含む)について actionを実行する
SimpleState より移植: ImmediateAddSupportがなければ消せる
numEffectState.h の 1225 行で定義されています。
参照元 osl::rating::ImmediateAddSupport::index(), と osl::rating::ImmediateAddSupport::match().
void osl::NumEffectState::forEachEffectOfPiece | ( | Piece | piece, | |
Action & | action | |||
) | const |
numEffectState.h の 1187 行で定義されています。
参照先 osl::BISHOP, osl::BLACK, osl::GOLD, osl::KING, osl::KNIGHT, osl::LANCE, NEW_PTYPEO, osl::PAWN, osl::PBISHOP, osl::PKNIGHT, osl::PLANCE, osl::PPAWN, osl::PROOK, osl::PSILVER, osl::Piece::ptypeO(), osl::ROOK, osl::SILVER, osl::Piece::square(), と osl::WHITE.
void osl::NumEffectState::forEachEffectOfPieceDir | ( | Square | , | |
Action & | , | |||
Int2Type< false > | ||||
) | const [inline, private] |
numEffectState.h の 816 行で定義されています。
void osl::NumEffectState::forEachEffectOfPieceDir | ( | Square | pieceSquare, | |
Action & | action | |||
) | const [inline, private] |
numEffectState.h の 824 行で定義されています。
void osl::NumEffectState::forEachEffectOfPieceDir | ( | Square | pieceSquare, | |
Action & | action, | |||
Int2Type< true > | ||||
) | const [inline, private] |
numEffectState.h の 818 行で定義されています。
void osl::NumEffectState::forEachEffectOfPieceLongDir | ( | Square | pieceSquare, | |
Action & | action, | |||
Int2Type< true > | ||||
) | const [inline, private] |
numEffectState.h の 830 行で定義されています。
参照先 osl::Offset::intValue(), osl::Piece::isEmpty(), と osl::SimpleState::pieceAt().
void osl::NumEffectState::forEachEffectOfPieceLongDir | ( | Square | , | |
Action & | , | |||
Int2Type< false > | ||||
) | const [inline, private] |
numEffectState.h の 828 行で定義されています。
void osl::NumEffectState::forEachEffectOfPieceLongDir | ( | Square | pieceSquare, | |
Action & | action | |||
) | const [inline, private] |
numEffectState.h の 841 行で定義されています。
void osl::NumEffectState::forEachEffectOfPtypeO | ( | Square | from, | |
Ptype | ptype, | |||
Function & | f | |||
) | const |
numEffectState.tcc の 98 行で定義されています。
void osl::NumEffectState::forEachEffectOfPtypeO | ( | Square | from, | |
PtypeO | ptypeo, | |||
Function & | f | |||
) | const |
PtypeO が Square にいると仮定した時にの利きを列挙.
盤面が実際と違うと長い利きが不正確になる
InterestEmpty | 空白のマスに興味があるか |
numEffectState.tcc の 123 行で定義されています。
参照先 osl::BLACK, osl::getOwner(), と osl::getPtype().
void osl::NumEffectState::forEachOnBoard | ( | F & | func | ) | const [inline] |
T は isBasic でなくても動くが unpromote(T) の結果と同じ.
numEffectState.h の 727 行で定義されています。
void osl::NumEffectState::forEachOnBoardPtypeStrict | ( | F & | func | ) | const [inline] |
T の成不成を区別.
numEffectState.h の 739 行で定義されています。
参照先 osl::PieceMask::getMask(), osl::isPromoted(), osl::SimpleState::pieceOf(), piecesOnBoard(), と promoted.
void osl::NumEffectState::generateAllUnsafe | ( | MoveVector & | out | ) | const |
自殺を含めてすべての手を生成
numEffectState.cc の 1081 行で定義されています。
参照先 osl::move_generator::capture::generate(), と osl::SimpleState::turn().
void osl::NumEffectState::generateLegal | ( | MoveVector & | moves | ) | const |
全ての合法手を生成する.
玉の素抜きや打歩詰の確認をする. ただし, 打歩詰め絡み以外では有利にはならない手 (MoveignoredUnpromote)は生成しない.
numEffectState.cc の 1086 行で定義されています。
参照先 osl::FixedCapacityVector< T, Capacity >::begin(), osl::FixedCapacityVector< T, Capacity >::end(), osl::move_generator::capture::generate(), inCheck(), isPawnDropCheckmate(), isSafeMove(), と osl::SimpleState::turn().
参照元 osl::rating::BradleyTerry::addSquare(), osl::move_probability::FeatureSet::generateRating(), generateWithFullUnpromotions(), と main().
void osl::NumEffectState::generateWithFullUnpromotions | ( | MoveVector & | moves | ) | const |
打歩詰め絡み以外では有利にはならない手も含め, 全ての合法手を生成す る(MoveignoredUnpromoteも生成する).
玉の素抜きや打歩詰の確認 をする.
numEffectState.cc の 1105 行で定義されています。
参照先 generateLegal(), osl::Move::hasIgnoredUnpromote(), inCheck(), osl::FixedCapacityVector< T, Capacity >::push_back(), osl::FixedCapacityVector< T, Capacity >::size(), と osl::Move::unpromote().
bool osl::NumEffectState::hasChangedEffects | ( | ) | const [inline] |
numEffectState.h の 141 行で定義されています。
参照先 osl::BLACK, osl::effect::NumSimpleEffectTable::changedEffects(), と effects.
参照元 changedEffects().
bool osl::NumEffectState::hasEffectAt | ( | Player | P, | |
Square | target, | |||
Piece & | attackerPiece | |||
) | const [inline] |
numEffectState.h の 597 行で定義されています。
参照先 osl::BLACK.
bool osl::NumEffectState::hasEffectAt | ( | Square | target, | |
Piece & | attackerPiece | |||
) | const [inline] |
P(template) | - 利きをつけている側のプレイヤ | |
target | - 利きをつけられた場所 | |
attackerPiece | - multiple attackの場合はPieceEMPTY() そうでないなら利きをつけている駒を返す |
mask|=0x8000000000000000ll; if((mask&(mask-1))!=0x8000000000000000ll) なら1つのif文で済む
numEffectState.h の 611 行で定義されています。
参照先 effectSetAt(), osl::Piece::EMPTY(), osl::PieceMask::getMask(), osl::SimpleState::pieceOf(), と piecesOnBoard().
bool osl::NumEffectState::hasEffectAt | ( | Square | target | ) | const [inline] |
対象とするマスにあるプレイヤーの利きがあるかどうか.
player | 攻撃側 | |
target | 対象のマス |
numEffectState.h の 324 行で定義されています。
参照先 effectSetAt(), と osl::Square::isOnBoard().
参照元 osl::eval::ml::KnightFork::accumulate(), osl::eval::ml::AttackMajorsInBase::addOne(), osl::move_probability::King5x5Ptype::addOne(), osl::checkmate::FixedDepthSearcher::attack(), osl::checkmate::FixedDepthSearcher::attackMayUnsafe(), osl::eval::ml::KnightCheck::canCheck(), osl::eval::ml::GoldFeatures::canMoveToSide(), osl::eval::ml::GoldFeatures::canRetreat(), osl::eval::ml::SilverFeatures::canRetreat(), osl::rating::DefenseKing8::count(), osl::mobility::countMobilityBoth(), osl::checkmate::FixedDepthSearcher::defense(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::King25EffectEach< Stage >::effectState(), osl::eval::ml::RookRookPiece::eval(), osl::eval::ml::BishopBishopPiece::eval(), osl::eval::ml::BishopHead::eval(), osl::eval::ml::GoldFeatures::evalOne(), osl::eval::ml::KnightFork::evalOne(), osl::eval::ml::MajorGoldSilverAttacked< Opening >::evalOne(), osl::eval::ml::PinPtypeAll::evalOne(), osl::move_probability::StateInfo::findCheckmateDefender(), osl::eval::ml::BishopRookFork::findDropInLine(), osl::rating::BadLanceGroup::findMatch(), osl::rating::ChaseGroup::findMatch(), osl::checkmate::FixedDepthSearcher::generateBlockingWhenLiberty0(), osl::checkmate::Dfpn::generateEscape(), osl::move_generator::detail::generateMoveToPtypeMaskWithPieceMask(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiece(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiecePtype(), osl::rating::FeatureSet::generateRating(), hasEffectByWithRemove(), osl::checkmate::King8Info::hasEffectMask(), osl::checkmate::Dfpn::hasEscapeMove(), inCheck(), osl::eval::ml::NonPawnAttackedPtypePair::index1(), inUnblockableCheck(), osl::eval::ml::KingXBlockedBase::isBlocked(), osl::move_classifier::PawnDropCheckmate< P >::isMember(), osl::move_probability::MoveFromOpposingSliders::longPtype(), osl::move_probability::BlockLong::makeLongAttackOne(), osl::rating::BadLance::match(), osl::rating::Chase::match(), osl::move_probability::EscapeThreatened::match(), osl::move_probability::PromotionBySacrifice::match(), osl::rating::ToSupported::match(), osl::rating::CheckmateIfCapture::match(), osl::eval::ml::SilverFork::matchGold(), osl::eval::ml::SilverFork::matchRook(), NumEffectState(), osl::effect_util::SendOffSquare::onlyOneSupport(), prologueCapture(), prologueDrop(), prologueSimple(), osl::eval::ml::BishopRookFork::testCenter(), と wasCheckEvasion().
pinされている駒以外からの利きがある.
numEffectState.h の 428 行で定義されています。
参照先 effectSetAt(), osl::Square::isOnBoard(), piecesOnBoard(), と pinOrOpen().
{pinされている駒, 玉以外}からの利きがある.
numEffectState.h の 419 行で定義されています。
参照先 effectSetAt(), osl::Square::isOnBoard(), osl::KING, piecesOnBoard(), と pinOrOpen().
駒attack が target に利きを持つか (旧hasEffectToと統合)
target | 対象のマス |
numEffectState.h の 450 行で定義されています。
参照先 effectSetAt(), osl::Square::isOnBoard(), osl::Piece::isPiece(), と osl::Piece::number().
参照元 osl::move_probability::BlockLong::addPiece(), osl::move_probability::MoveInfo::adhocAdjustAttackCheckmateDefender(), osl::move_probability::MoveInfo::adhocAdjustBreakThreatmate(), osl::move_probability::MoveInfo::adhocAdjustSlider(), osl::checkmate::CheckmateIfCapture::cannotCapture(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::BishopExchangeSilverKing::eval(), osl::rating::AttackKing8Group::findMatch(), osl::move_generator::detail::generateDirNotKing(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiecePtypeUnsafe(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePieceUnsafe(), osl::effect_util::Neighboring8Direct::Table::hasEffectOrAdditional(), osl::rating::PinAttack::index(), osl::rating::ImmediateAddSupport::index(), isAlmostValidMove(), osl::rating::PinAttack::match(), osl::rating::AttackKing8::match(), osl::move_probability::LongRecapture::match(), osl::checkmate::ImmediateCheckmate::slowHasCheckmateMoveDirPiece(), と osl::move_probability::StateInfo::updatePinnedGenerals().
bool osl::NumEffectState::hasEffectByPtype | ( | Player | attack, | |
Square | target | |||
) | const [inline] |
target に ptype の利きがあるか? 成不成を区別しない
numEffectState.h の 355 行で定義されています。
参照元 osl::rating::Block::count(), osl::eval::ml::RookRookPiece::eval(), osl::eval::ml::BishopBishopPiece::eval(), osl::rating::CountOpen::index(), osl::checkmate::ProofNumberTable::libertyAfterAllMove(), と osl::rating::Check::openLong().
bool osl::NumEffectState::hasEffectByPtypeStrict | ( | Player | attack, | |
Square | target | |||
) | const [inline] |
target に ptype の利きがあるか? 成不成を区別
numEffectState.h の 363 行で定義されています。
参照先 osl::PieceMask::getMask(), osl::isPromoted(), と promoted.
参照元 osl::eval::ml::KnightCheck::canCheck(), osl::rating::Threatmate::captureForKnightCheck(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::KnightHead::eval(), osl::eval::ml::SilverFeatures::evalOne(), osl::eval::ml::CheckShadowPtype::evalOne(), osl::eval::ml::PinPtypeAll::evalOne(), osl::rating::Threatmate::isCandidate(), osl::eval::ml::PinPtypeAll::pawnAttack(), と osl::progress::ml::NewProgress::updatePawnFacing().
bool osl::NumEffectState::hasEffectByWithRemove | ( | Square | target, | |
Square | removed | |||
) | const |
numEffectState.tcc の 12 行で定義されています。
参照先 osl::BLACK, osl::Board_Table, osl::BoardTable::getLongDirection(), hasEffectAt(), hasEffectNotBy(), osl::Piece::isEmptyNum(), osl::isLong(), osl::Piece::isPiece(), longEffectAt(), longEffectNumTable(), osl::longToShort(), osl::Piece::number(), osl::Piece::owner(), osl::SimpleState::pieceAt(), と osl::SimpleState::pieceOf().
bool osl::NumEffectState::hasEffectByWithRemove | ( | Player | player, | |
Square | target, | |||
Square | removed | |||
) | const [inline] |
numEffectState.h の 490 行で定義されています。
参照先 osl::BLACK.
bool osl::NumEffectState::hasEffectIf | ( | PtypeO | ptypeo, | |
Square | attacker, | |||
Square | target | |||
) | const [inline] |
attackerにptypeoの駒がいると仮定した場合にtargetに利きがあるかどうか を stateをupdateしないで確かめる.
targetSquareは空白でも良い 盤上の駒を動かす事を検討しているときはに, 自分自身の陰に入って利かないと見なされることがある
numEffectState.h の 465 行で定義されています。
参照先 osl::Board_Table, osl::PtypeTable::getEffect(), osl::BoardTable::getShortOffset(), osl::EffectContent::hasEffect(), osl::EffectContent::hasUnblockableEffect(), osl::SimpleState::isEmptyBetween(), osl::EffectContent::offset(), と osl::Ptype_Table.
参照元 osl::eval::ml::MajorCheckWithCapture::addOne(), osl::move_probability::MoveInfo::adhocAdjustBreakThreatmate(), osl::move_probability::MoveInfo::adhocAdjustKeepCheckmateDefender(), osl::move_probability::KingBlockade::blockAll(), osl::move_probability::CoverFork::defending(), osl::move_action::NoAddEffectFilter< OrigAction >::dropMove(), osl::rating::ChaseGroup::findMatch(), osl::rating::ImmediateEscapeGroup::findMatchWithoutProgress(), osl::effect_util::Neighboring8Direct::hasEffectFromTo(), osl::rating::PinAttack::index(), osl::rating::ImmediateAddSupport::index(), osl::rating::Threatmate::isCandidate(), osl::move_probability::BreakThreatmate::isDefendingThreatmate(), osl::move_classifier::DirectCheck< P >::isMember(), osl::rating::PinAttack::match(), osl::rating::Chase::match(), osl::move_probability::EscapeThreatened::match(), osl::move_probability::PromotionBySacrifice::match(), osl::move_probability::KingBlockade::match(), osl::move_probability::CoverPawn::match(), osl::move_probability::AttackKing8Long::match(), osl::move_probability::LureDefender::match(), osl::move_probability::AttackToOpposingSliders::match(), osl::rating::ImmediateEscape::match(), osl::move_action::NoAddEffectFilter< OrigAction >::simpleMove(), osl::move_action::NoAddEffectFilter< OrigAction >::unknownMove(), osl::move_probability::StateInfo::updatePinnedGenerals(), と wasCheckEvasion().
bool osl::NumEffectState::hasEffectInDirection | ( | Square | to | ) | const [inline] |
あるマスにあるDirectionでの長い利きがあるかどうか.
64bit版対応済み
numEffectState.h の 377 行で定義されています。
参照先 osl::BLACK, osl::Board_Table, effectSetAt(), osl::BoardTable::getLongDirection(), osl::PieceMask::getMask(), osl::SimpleState::pieceOf(), pieces_onboard, piecesOnBoard(), osl::Piece::square(), と osl::static_assert().
bool osl::NumEffectState::hasEffectNotBy | ( | Player | player, | |
Piece | piece, | |||
Square | target | |||
) | const [inline] |
対象とするマスにあるプレイヤーの(ただしある駒以外)利きがあるかどうか.
player | 攻撃側 | |
piece | 攻撃側の駒 | |
target | 対象のマス |
numEffectState.h の 409 行で定義されています。
参照先 effectSetAt(), osl::Piece::number(), osl::Piece::owner(), pieces_onboard, と piecesOnBoard().
参照元 osl::eval::ml::AttackMajorsInBase::addOne(), osl::rating::Threatmate::captureForKnightCheck(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::BishopRookFork::findDropInLine(), osl::checkmate::Dfpn::generateEscape(), hasEffectByWithRemove(), と osl::eval::ml::BishopRookFork::testCenter().
bool osl::NumEffectState::hasLongEffectAt | ( | Player | P, | |
Square | to | |||
) | const [inline] |
あるマスにPTYPEの長い利きがあるかどうか.
numEffectState.h の 346 行で定義されています。
参照先 osl::BISHOP, osl::LANCE, osl::ROOK, と osl::static_assert().
参照元 osl::eval::ml::MajorCheckWithCapture::addOne(), と osl::move_generator::detail::generateDir().
二つ以上の駒から利きがある.
そもそも利きがない場合も呼ばれる
player | 攻撃側 | |
target | 対象のマス |
numEffectState.h の 439 行で定義されています。
参照先 effectSetAt().
参照元 osl::move_generator::detail::blockingU(), と osl::checkmate::FixedDepthSearcher::generateBlockingWhenLiberty0().
uint64_t osl::NumEffectState::Iking8Info | ( | Player | king | ) | const [inline] |
numEffectState.h の 78 行で定義されています。
参照先 king8infos.
参照元 osl::checkmate::FixedDepthSearcher::attack(), osl::checkmate::ProofNumberTable::attackEstimation(), osl::eval::ml::CanCheckNonPawnPieceStandCombination::canCheck(), osl::checkmate::ProofNumberTable::countLiberty(), osl::checkmate::FixedDepthSearcher::defenseEstimation(), osl::eval::ml::KingXBlocked3::eval(), osl::eval::ml::KingXBothBlocked::eval(), osl::eval::ml::King8EffectAll::eval(), osl::move_generator::detail::generateDir(), osl::move_generator::piece_on_board::generateKing(), osl::checkmate::ImmediateCheckmate::hasCheckmateMove(), osl::eval::ml::KingXBlockedBase::isBlocked(), isConsistent(), osl::move_classifier::PawnDropCheckmate< P >::isMember(), osl::move_probability::StateInfo::king8Info(), king8Info(), osl::checkmate::ProofNumberTable::libertyAfterAllDrop(), と osl::checkmate::ProofNumberTable::libertyAfterAllMove().
bool osl::NumEffectState::inCheck | ( | Player | P | ) | const [inline] |
Pの玉が王手状態.
numEffectState.h の 88 行で定義されています。
参照先 osl::alt(), hasEffectAt(), osl::Square::isPieceStand(), と osl::SimpleState::kingSquare().
参照元 osl::rating::FeatureSet::annotate(), osl::checkmate::FixedDepthSearcher::attack(), osl::checkmate::CheckmateIfCapture::cannotCapture(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::rating::KingEscapeGroup::findMatch(), osl::checkmate::DualDfpn::findProof(), osl::move_probability::StateInfo::findShortThreatmate(), osl::checkmate::Dfpn::generateCheck(), osl::rating::FeatureSet::generateRating(), osl::checkmate::ImmediateCheckmate::hasCheckmateMove(), osl::checkmate::Dfpn::Tree::inCheck(), osl::rating::Threatmate::isCandidate(), isMated(), osl::rating::FeatureSet::logProbKingEscape(), osl::rating::FeatureSet::logProbSeePlus(), osl::rating::FeatureSet::logProbTakeBack(), osl::record::CsaFile::makeInfo(), osl::move_probability::StateInfo::makePinOfLongPieces(), osl::move_probability::EscapeThreatened::match(), osl::move_probability::PromotionBySacrifice::match(), osl::move_probability::CoverPawn::match(), osl::move_probability::CheckmateIfCapture::match(), osl::rating::KingEscape::match(), osl::rating::Threatmate::Helper::operator()(), と osl::RepetitionCounter::push().
bool osl::NumEffectState::inCheck | ( | ) | const [inline] |
手番の玉が王手状態
numEffectState.h の 98 行で定義されています。
参照先 inCheck(), と osl::SimpleState::turn().
参照元 findThreatenedPiece(), generateLegal(), generateWithFullUnpromotions(), と inCheck().
bool osl::NumEffectState::inUnblockableCheck | ( | Player | target | ) | const [inline] |
target の王に合駒可能でない王手がかかっているかどうか.
numEffectState.h の 107 行で定義されています。
参照先 osl::alt(), osl::Piece::EMPTY(), osl::PtypeTable::getEffect(), hasEffectAt(), osl::EffectContent::hasUnblockableEffect(), osl::SimpleState::kingSquare(), osl::Ptype_Table, osl::Piece::ptypeO(), と osl::Piece::square().
参照元 osl::checkmate::FixedDepthSearcher::defense(), osl::checkmate::ProofPieces::leaf(), と osl::checkmate::Dfpn::Node::setCheckmateDefense().
bool osl::NumEffectState::isAlmostValidMove | ( | Move | move | ) | const |
合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.
Pをtemplate引数にできると少しは速くなりそう 局面に依存する検査でも,玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.
showError(template) | - falseを返す時には何か表示する. | |
move | - 手 |
osl::SimpleStateを再定義しています。
numEffectState.cc の 823 行で定義されています。
参照先 osl::Move::from(), hasEffectByPiece(), osl::Move::isNormal(), osl::Square::isPieceStand(), osl::Move::isValid(), osl::SimpleState::isValidMoveByRule(), osl::SimpleState::pieceAt(), osl::Move::player(), osl::Move::to(), と osl::SimpleState::turn().
参照元 osl::checkmate::Dfpn::analyze(), osl::checkmate::OracleAdjust::attack(), osl::checkmate::FixedDepthSearcher::attack(), makeMove(), makeUnmakeMove(), と osl::eval::See::seeInternal().
bool osl::NumEffectState::isAlmostValidMove | ( | Move | move, | |
bool | show_error = true | |||
) | const |
合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.
局面に依存する検査でも,玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.
osl::SimpleStateを再定義しています。
numEffectState.cc の 847 行で定義されています。
bool osl::NumEffectState::isCheck | ( | Move | move | ) | const |
numEffectState.cc の 1058 行で定義されています。
bool osl::NumEffectState::isConsistent | ( | bool | showError = true |
) | const |
osl::SimpleStateを再定義しています。
numEffectState.cc の 663 行で定義されています。
参照先 osl::alt(), osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::effect::NumSimpleEffectTable::effectSetAt(), Iking8Info(), osl::indexToPlayer(), osl::SimpleState::isConsistent(), osl::Piece::isOnBoard(), osl::Piece::isPromoted(), osl::SimpleState::kingSquare(), osl::checkmate::King8Info::make(), osl::SimpleState::pieceOf(), pin(), promoted, osl::Piece::SIZE, osl::PieceMask::test(), と osl::checkmate::King8Info::uint64Value().
参照元 osl::record::CheckDuplicate::getLastState(), osl::record::KisenPlusFile::load(), osl::csa::CsaFileMinimal::load(), osl::record::KisenFile::moves(), osl::operator==(), と osl::record::CsaFile::read().
bool osl::NumEffectState::isConsistent | ( | const NumEffectState & | prev, | |
Move | moved, | |||
bool | show_error = true | |||
) | const |
局面更新に関する一貫性をテスト
numEffectState.cc の 734 行で定義されています。
参照先 osl::BLACK, changedEffects(), changedPieces(), effectedChanged(), effectedMask(), effectSetAt(), osl::indexToPlayer(), osl::SimpleState::pieceOf(), piecesOnBoard(), osl::Piece::SIZE, osl::Piece::square(), osl::PieceMask::test(), osl::Move::to(), と osl::WHITE.
bool osl::NumEffectState::isDirectCheck | ( | Move | move | ) | const |
numEffectState.cc の 1068 行で定義されています。
参照元 osl::rating::CheckGroup::findMatch(), と osl::rating::Check::match().
bool osl::NumEffectState::isOnBoardNum | ( | int | num | ) | const [inline] |
numEffectState.h の 170 行で定義されています。
参照先 osl::BLACK, piecesOnBoard(), osl::PieceMask::test(), と osl::WHITE.
bool osl::NumEffectState::isOpenCheck | ( | Move | move | ) | const |
numEffectState.cc の 1074 行で定義されています。
参照元 osl::rating::CheckGroup::findMatch(), と osl::rating::Check::match().
bool osl::NumEffectState::isPawnDropCheckmate | ( | Move | move | ) | const |
numEffectState.cc の 1063 行で定義されています。
参照元 generateLegal().
bool osl::NumEffectState::isSafeMove | ( | Move | move | ) | const |
numEffectState.cc の 1053 行で定義されています。
参照元 generateLegal().
const osl::checkmate::King8Info osl::NumEffectState::king8Info | ( | Player | king | ) | const |
numEffectState.h の 183 行で定義されています。
参照先 king_mobility, と osl::Square::makeDirect().
参照元 osl::eval::ml::KingMobilitySum::evalOne(), osl::eval::ml::KingMobility::evalOne(), osl::move_probability::StateInfo::finishUpdate(), osl::move_generator::detail::generateBishopLongMove(), osl::move_generator::detail::generateRookLongMove(), と kingMobilityOfPlayer().
玉がd方向にどこまで動けるかを返す
p | 注目する玉のプレイヤ | |
d | piece からみた向き |
numEffectState.h の 192 行で定義されています。
参照先 osl::BLACK, osl::inverse(), と kingMobilityAbs().
参照元 osl::move_generator::detail::generateDir(), osl::move_generator::detail::generateOpenOrCapture(), と osl::effect_util::Neighboring8Direct::Table::hasEffectOrAdditional().
const mask_t osl::NumEffectState::longEffectAt | ( | Square | target | ) | const [inline] |
numEffectState.h の 298 行で定義されています。
参照先 effectSetAt().
参照元 osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::move_probability::BlockLong::findAll(), osl::move_generator::detail::generateDir(), osl::move_generator::detail::generateDirNotKing(), hasEffectByWithRemove(), osl::rating::Threatmate::isCandidate(), osl::move_probability::BreakThreatmate::isDefendingKing8(), longEffectAt(), osl::move_probability::MoveFromOpposingSliders::longPtype(), osl::move_probability::StateInfo::makePinOfLongPieces(), osl::move_probability::PromotionBySacrifice::match(), と osl::move_probability::FromEffectLong::match().
const mask_t osl::NumEffectState::longEffectAt | ( | Square | target, | |
Player | owner | |||
) | const [inline] |
numEffectState.h の 302 行で定義されています。
const mask_t osl::NumEffectState::longEffectAt | ( | Square | target | ) | const [inline] |
numEffectState.h の 306 行で定義されています。
参照先 effectSetAt().
numEffectState.h の 310 行で定義されています。
参照先 osl::PieceMask::getMask(), longEffectAt(), と piecesOnBoard().
bool osl::NumEffectState::longEffectChanged | ( | ) | const [inline] |
numEffectState.h の 155 行で定義されています。
参照先 changedPieces().
const EffectedNumTable& osl::NumEffectState::longEffectNumTable | ( | ) | const [inline] |
numEffectState.h の 124 行で定義されています。
参照先 osl::effect::NumSimpleEffectTable::effectedNumTable, と effects.
参照元 osl::effect_util::AdditionalOrShadow::count(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDirPiece(), osl::effect_util::AdditionalEffect::hasEffect(), hasEffectByWithRemove(), makePinOpenDir(), pinAttacker(), と recalcPinOpen().
template void osl::NumEffectState::makeKing8Info< WHITE > | ( | ) | [private] |
numEffectState.cc の 50 行で定義されています。
参照先 osl::alt(), と king8infos.
void osl::NumEffectState::makeMove | ( | Move | move | ) |
numEffectState.cc の 201 行で定義されています。
参照先 osl::captured(), osl::SimpleState::changeTurn(), doCaptureMove(), doDropMove(), doSimpleMove(), osl::Piece::EMPTY(), osl::Move::from(), isAlmostValidMove(), osl::Move::isPass(), osl::Square::isPieceStand(), makeMovePass(), osl::SimpleState::pieceOnBoard(), osl::Move::player(), osl::Move::promoteMask(), osl::Move::ptype(), osl::Move::to(), と osl::SimpleState::turn().
参照元 osl::checkmate::Dfpn::analyze(), osl::record::CheckDuplicate::getLastState(), osl::record::KisenPlusFile::load(), main(), osl::record::CsaFile::makeInfo(), osl::record::KisenFile::moves(), osl::usi::parse(), osl::ki2::Ki2File::parseLine(), osl::kakinoki::KakinokiFile::parseLine(), osl::csa::CsaFileMinimal::parseLine(), osl::record::KisenWriter::save(), osl::ki2::show(), と osl::book::WeightedBook::validate().
void osl::NumEffectState::makeMovePass | ( | ) | [inline] |
osl::PieceMask osl::NumEffectState::makePinOpen | ( | osl::Square | target, | |
osl::Player | defense | |||
) | [private] |
numEffectState.cc の 884 行で定義されています。
参照先 osl::alt(), osl::Square::isPieceStand(), と piecesOnBoard().
参照元 makePinOpen(), NumEffectState(), prologueCapture(), と prologueSimple().
void osl::NumEffectState::makePinOpen | ( | osl::Player | defense | ) | [private] |
numEffectState.cc の 901 行で定義されています。
参照先 osl::SimpleState::kingSquare(), makePinOpen(), と pin_or_open.
void osl::NumEffectState::makeUnmakeMove | ( | Player2Type< P > | player, | |
Move | move, | |||
Function & | f | |||
) | [inline] |
numEffectState.h の 691 行で定義されています。
参照先 osl::captured(), doUndoCaptureMove(), doUndoDropMove(), doUndoSimpleMove(), osl::Piece::EMPTY(), osl::Move::from(), isAlmostValidMove(), osl::Move::isPass(), osl::Square::isPieceStand(), osl::Move::isValid(), makeUnmakePass(), osl::SimpleState::pieceAt(), osl::Move::player(), osl::Move::promoteMask(), osl::Move::ptype(), osl::Move::to(), と osl::SimpleState::turn().
void osl::NumEffectState::makeUnmakeMove | ( | Move | move, | |
Function & | f | |||
) | [inline] |
numEffectState.h の 683 行で定義されています。
参照先 osl::Move::player().
参照元 osl::checkmate::FixedDepthSearcher::attack(), osl::checkmate::FixedDepthSearcher::defense(), osl::checkmate::CheckmateIfCapture::effectiveAttack(), osl::checkmate::FixedDepthSolverExt::hasEscapeByMove(), osl::checkmate::FixedDepthSearcher::hasEscapeByMove(), と osl::rating::Threatmate::match().
void osl::NumEffectState::makeUnmakePass | ( | Function & | f | ) | [inline] |
numEffectState.h の 676 行で定義されています。
参照先 osl::SimpleState::changeTurn(), と osl::Square::STAND().
参照元 makeUnmakeMove().
numEffectState.h の 175 行で定義されています。
参照先 effects, osl::mobility::MobilityTable::get(), と osl::effect::NumSimpleEffectTable::mobilityTable.
参照元 osl::mobility::LanceMobility::countAll(), osl::mobility::BishopMobility::countAll(), osl::mobility::BishopMobility::countAllDir(), osl::eval::ml::NumPiecesBetweenBishopAndKing::countBetween(), osl::mobility::RookMobility::countHorizontalAll(), osl::mobility::RookMobility::countVerticalAll(), osl::eval::ml::LanceEffectPieceKingRelative::eval(), osl::eval::ml::RookRookPiece::eval(), osl::eval::ml::BishopBishopPiece::eval(), osl::eval::ml::BishopEffectBase::eval(), osl::eval::ml::RookPromoteDefense::eval(), osl::eval::ml::RookEffectBase::eval(), osl::move_generator::promote::MayPromoteDir< P, T, noCapture, Dir >::generateIfValid(), osl::move_generator::promote::AllPromoteDir< P, T, noCapture, Dir >::generateIfValid(), osl::move_generator::piece_on_board::generateLance(), osl::move_generator::piece_on_board::generateLong(), osl::move_generator::detail::generateOpenOrCapture(), osl::move_probability::BlockLong::makeLongAttackOne(), と mobilityOf().
numEffectState.h の 179 行で定義されています。
参照先 mobilityOf(), と osl::Piece::number().
numEffectState.h の 63 行で定義されています。
参照先 pieces_onboard.
参照元 osl::eval::ml::PiecePairKing::add(), osl::eval::ml::MajorCheckWithCapture::addOne(), osl::eval::ml::PiecePairKing::addSub(), allEffectAt(), osl::move_generator::escape::blockByMoveOne(), osl::checkmate::detail::blockingDiagonalAttack(), osl::move_generator::detail::blockingU(), osl::checkmate::detail::blockingVerticalAttack(), checkShadow(), osl::eval::ml::King25Effect::countEffectAndPieces(), osl::eval::ml::King25EffectBoth::countEffectAndPiecesBoth(), osl::progress::Effect5x3WithBonus::countEffectPieces(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::move_generator::Capture< Action >::escapeByCapture(), osl::eval::ml::KnightFork::eval(), osl::eval::ml::BishopRookFork::eval(), osl::eval::ml::NonPawnAttackedPtype::eval(), osl::eval::ml::NonPawnAttacked::eval(), osl::eval::ml::RookPromoteDefense::eval(), osl::eval::ml::KingPieceRelativeNoSupport::eval(), osl::eval::ml::PiecePairKing::evalOne(), osl::eval::ml::KnightFork::evalOne(), osl::eval::ml::NonPawnAttackedPtypePair::evalOne(), osl::eval::ml::PromotedMinorPieces::evalOne(), osl::eval::ml::King25EffectCountCombination::evalOne(), osl::eval::ml::King25Effect3::evalOne(), osl::eval::ml::King25EmptySquareNoEffect::evalOne(), osl::eval::ml::KnightFork::evalWithUpdate(), osl::eval::ml::KingPieceRelativeNoSupport::evalWithUpdate(), osl::eval::ml::NonPawnAttackedPtype::evalWithUpdateBang(), osl::eval::ml::NonPawnAttacked::evalWithUpdateBang(), osl::move_probability::ToEffect::find(), findAttackNotBy(), findCheapAttack(), findCheapAttackNotBy(), findThreatenedPiece(), forEachEffect(), forEachEffectNotBy(), forEachOnBoard(), forEachOnBoardPtypeStrict(), osl::move_generator::Capture< Action >::generate(), osl::move_generator::detail::generateDirNotKing(), osl::move_generator::detail::generateMoveToPtypeMask(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDir(), osl::checkmate::detail::hasCheckmateMoveKnight(), osl::effect_util::AdditionalEffect::hasEffect(), hasEffectAt(), hasEffectByNotPinned(), hasEffectByNotPinnedAndKing(), hasEffectInDirection(), hasEffectNotBy(), osl::rating::ImmediateAddSupport::index(), isConsistent(), isOnBoardNum(), longEffectAt(), osl::checkmate::King8Info::make(), makePinOpen(), osl::move_probability::CoverFork::match(), osl::move_probability::ToEffectLong::match(), pin(), recalcPinOpen(), osl::checkmate::detail::slowCheckDrop(), osl::checkmate::ImmediateCheckmate::slowHasCheckmateMoveDirPiece(), osl::eval::ml::PiecePairKing::sub(), osl::progress::ml::NewProgress::updateAttack5x5Pieces(), osl::eval::ml::NonPawnAttackedPtype::updateChanged(), osl::eval::ml::NonPawnAttacked::updateEffectChanged(), osl::progress::ml::NewProgress::updateNonPawnAttackedPtypePairOne(), osl::progress::ml::NewProgress::updatePawnFacing(), と osl::move_probability::StateInfo::updatePinnedGenerals().
numEffectState.h の 65 行で定義されています。
参照先 piecesOnBoard(), と pin_or_open.
参照元 osl::move_probability::StateInfo::clearOldCache(), osl::eval::ml::PinPtypeAll::evalOne(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiecePtype(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePtype(), osl::move_generator::detail::generateRookLongMoveNotKing(), isConsistent(), osl::rating::RatingEnv::make(), safeCaptureNotByKing(), と wasCheckEvasion().
numEffectState.h の 248 行で定義されています。
参照先 osl::Piece::owner().
Pのpinされた駒から,そのpinの原因となっている長い利きを持つ駒を得る..
numEffectState.h の 240 行で定義されています。
参照先 osl::BLACK, osl::inverseUnsafe(), longEffectNumTable(), osl::Piece::number(), osl::Piece::owner(), osl::SimpleState::pieceOf(), と pinOrOpen().
numEffectState.h の 229 行で定義されています。
参照先 osl::Piece::owner().
pinされた駒pがtoに動けるか? pinに関係がなければtoへ動けるという前提
numEffectState.h の 222 行で定義されています。
参照先 osl::Board_Table, osl::BoardTable::getShort8Unsafe(), osl::Piece::owner(), osl::primDir(), osl::primDirUnsafe(), と osl::Piece::square().
参照元 osl::eval::See::computeValue(), と osl::move_generator::capture::generate().
pinされた駒がPのKingから見てどの方向か? Pから見たdirectionを返す
numEffectState.h の 203 行で定義されています。
参照先 osl::Board_Table, osl::BoardTable::getShort8(), osl::Piece::number(), osl::Piece::owner(), pinOrOpen(), と osl::Piece::square().
参照元 osl::move_generator::detail::generateMoveToPtypeMaskWithPieceMask(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiece(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiecePtype(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePtype(), osl::move_generator::detail::generateRookLongMoveNotKing(), と wasCheckEvasion().
numEffectState.h の 210 行で定義されています。
参照先 osl::Piece::owner().
numEffectState.h の 74 行で定義されています。
参照先 pin_or_open.
参照元 osl::move_generator::capture::generate(), osl::move_generator::Capture< Action >::generate1(), osl::checkmate::Dfpn::generateCheck(), osl::move_generator::detail::generateDir(), osl::move_generator::detail::generateDirNotKing(), osl::move_generator::detail::generateKnightDir(), osl::move_generator::detail::generateMoveToPtypeMask(), osl::move_generator::detail::generateMoveToPtypeMaskWithPieceMask(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiece(), osl::move_generator::detail::generateRookLongMove(), osl::checkmate::detail::hasCheckmateMoveKnight(), hasEffectByNotPinned(), hasEffectByNotPinnedAndKing(), osl::move_classifier::KingOpenMove< P >::isMember(), pinAttacker(), pinnedDir(), と osl::move_probability::PatternCommon::updateCacheOne().
void osl::NumEffectState::prologueCapture | ( | Player2Type< P > | , | |
Square | from, | |||
Square | to, | |||
Piece | target, | |||
int | promoteMask, | |||
Piece & | oldPiece, | |||
PtypeO & | oldPtypeO, | |||
PtypeO & | capturePtypeO, | |||
PtypeO & | new_ptypeo, | |||
int & | num0, | |||
int & | num1, | |||
int & | num1Index, | |||
mask_t & | num1Mask, | |||
CArray< PieceMask, 2 > & | pin_or_open_backup, | |||
KingMobility & | king_mobility_backup, | |||
PieceMask & | promoted_backup, | |||
CArray< PieceMask, 2 > & | effected_mask_backup, | |||
CArray< PieceMask, 2 > & | effected_changed_mask_backup, | |||
CArray< uint64_t, 2 > & | king8infos_backup, | |||
MobilityTable & | mobility_backup | |||
) | [private] |
numEffectState.cc の 531 行で定義されています。
参照先 osl::alt(), osl::BLACK, osl::container::Board_Mask_Table3x3, osl::Piece::captured(), changedEffects(), osl::effect::NumSimpleEffectTable::clearChangedEffects(), osl::effect::NumSimpleEffectTable::clearEffectedChanged(), osl::effect::NumSimpleEffectTable::effected_changed_mask, osl::effect::NumSimpleEffectTable::effected_mask, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, effectSetAt(), osl::Piece::EMPTY(), osl::getPtype(), hasEffectAt(), osl::KING, king8infos, king_mobility, makePinOpen(), osl::effect::NumSimpleEffectTable::mobilityTable, osl::newPtypeO(), osl::Piece::number(), osl::PieceMask::numToMask(), osl::SimpleState::pieceAt(), pieces_onboard, pin_or_open, promoted, osl::Piece::promoteWithMask(), osl::Piece::ptypeO(), recalcPinOpen(), osl::PieceMask::reset(), osl::PieceMask::set(), osl::SimpleState::setBoard(), osl::effect::NumSimpleEffectTable::setChangedPieces(), osl::SimpleState::setPieceOf(), osl::SimpleState::stand_count, osl::SimpleState::standMask(), osl::unpromote(), osl::WHITE, と osl::PieceMask::xorMask().
参照元 doCaptureMove(), と doUndoCaptureMove().
void osl::NumEffectState::prologueDrop | ( | Player2Type< P > | , | |
Square | to, | |||
Ptype | ptype, | |||
Piece & | oldPiece, | |||
int & | num, | |||
PtypeO & | ptypeO, | |||
int & | numIndex, | |||
mask_t & | numMask, | |||
CArray< PieceMask, 2 > & | pin_or_open_backup, | |||
KingMobility & | king_mobility_backup, | |||
CArray< PieceMask, 2 > & | effected_mask_backup, | |||
CArray< PieceMask, 2 > & | effected_changed_mask_backup, | |||
CArray< uint64_t, 2 > & | king8infos_backup, | |||
MobilityTable & | mobility_backup | |||
) | [private] |
numEffectState.cc の 431 行で定義されています。
参照先 osl::alt(), osl::BLACK, osl::container::Board_Mask_Table3x3, changedEffects(), osl::effect::NumSimpleEffectTable::clearChangedEffects(), osl::effect::NumSimpleEffectTable::clearEffectedChanged(), osl::effect::NumSimpleEffectTable::effected_changed_mask, osl::effect::NumSimpleEffectTable::effected_mask, effects, osl::PtypeTable::getIndex(), osl::PieceMask::getMask(), osl::PtypeTable::getMaskLow(), hasEffectAt(), king8infos, king_mobility, osl::effect::NumSimpleEffectTable::mobilityTable, osl::SimpleState::pieceOf(), pieces_onboard, pin_or_open, osl::Ptype_Table, osl::Piece::ptypeO(), recalcPinOpen(), osl::SimpleState::setBoard(), osl::SimpleState::setPieceOf(), osl::Square::STAND(), osl::SimpleState::stand_count, osl::SimpleState::standMask(), osl::WHITE, と osl::PieceMask::xorMask().
参照元 doDropMove(), と doUndoDropMove().
void osl::NumEffectState::prologueSimple | ( | Player2Type< P > | , | |
Square | from, | |||
Square | to, | |||
int | promoteMask, | |||
Piece & | oldPiece, | |||
int & | num, | |||
PtypeO & | oldPtypeO, | |||
PtypeO & | new_ptypeo, | |||
CArray< PieceMask, 2 > & | pin_or_open_backup, | |||
KingMobility & | king_mobility_backup, | |||
PieceMask & | promoted_backup, | |||
CArray< PieceMask, 2 > & | effected_mask_backup, | |||
CArray< PieceMask, 2 > & | effected_changed_mask_backup, | |||
CArray< uint64_t, 2 > & | king8infos_backup, | |||
MobilityTable & | mobility_backup | |||
) | [private] |
numEffectState.cc の 321 行で定義されています。
参照先 osl::alt(), osl::BLACK, osl::container::Board_Mask_Table3x3, changedEffects(), osl::effect::NumSimpleEffectTable::clearChangedEffects(), osl::effect::NumSimpleEffectTable::clearEffectedChanged(), osl::effect::NumSimpleEffectTable::effected_changed_mask, osl::effect::NumSimpleEffectTable::effected_mask, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::Piece::EMPTY(), hasEffectAt(), osl::KING, king8infos, king_mobility, makePinOpen(), osl::effect::NumSimpleEffectTable::mobilityTable, osl::newPtypeO(), osl::Piece::number(), osl::SimpleState::pieceAt(), pin_or_open, promoted, osl::Piece::promoteWithMask(), osl::Piece::ptypeO(), recalcPinOpen(), osl::PieceMask::set(), osl::SimpleState::setBoard(), osl::SimpleState::setPieceOf(), と osl::WHITE.
参照元 doSimpleMove(), と doUndoSimpleMove().
const PieceMask osl::NumEffectState::promotedPieces | ( | ) | const [inline] |
numEffectState.h の 64 行で定義されています。
参照先 promoted.
参照元 osl::eval::ml::PiecePairKing::add(), osl::eval::ml::PiecePairKing::addSub(), osl::eval::ml::NonPawnAttackedPtype::eval(), osl::eval::ml::NonPawnAttacked::eval(), osl::eval::ml::PromotedMinorPieces::eval(), osl::eval::ml::BishopExchangeSilverKing::eval(), osl::eval::ml::PiecePairKing::evalOne(), osl::eval::ml::NonPawnAttackedPtypePair::evalOne(), osl::eval::ml::King25EffectCountCombination::evalOne(), osl::eval::ml::King25Effect3::evalOne(), osl::eval::ml::NonPawnAttackedPtype::evalWithUpdateBang(), osl::eval::ml::NonPawnAttacked::evalWithUpdateBang(), findThreatenedPiece(), osl::move_generator::detail::generateKnightDir(), osl::checkmate::detail::hasCheckmateMoveKnight(), osl::effect_util::AdditionalEffect::hasEffect(), osl::ki2::show(), osl::eval::ml::PiecePairKing::sub(), osl::progress::ml::NewProgress::updateAttack5x5Pieces(), osl::progress::ml::NewProgress::updateNonPawnAttackedPtypePairOne(), と osl::progress::ml::NewProgress::updatePawnFacing().
void osl::NumEffectState::recalcPinOpen | ( | Square | changed, | |
Direction & | lastDir, | |||
Player | defense | |||
) | [inline, private] |
numEffectState.h の 998 行で定義されています。
参照先 osl::alt(), osl::BLACK, osl::Board_Table, osl::BoardTable::getLongDirection(), osl::BoardTable::getOffsetForBlack(), osl::Piece::isEdgeNum(), osl::Piece::isEmptyNum(), osl::isLong(), osl::Piece::isPieceNum(), osl::Square::isPieceStand(), king_mobility, osl::SimpleState::kingSquare(), longEffectNumTable(), osl::longToShort(), osl::Square::makeDirect(), osl::Piece::number(), osl::SimpleState::pieceAt(), piecesOnBoard(), pin_or_open, osl::Square::uintValue(), と osl::UL.
numEffectState.h の 875 行で定義されています。
osl::Piece osl::NumEffectState::safeCaptureNotByKing | ( | Square | target, | |
Piece | king | |||
) | const |
玉の素抜きなしに合法手でtargetに移動可能かを判定
king | 玉 (玉で取る手は考えない) |
numEffectState.tcc の 137 行で定義されています。
参照先 findAttackNotBy(), osl::Piece::isPiece(), osl::Piece::number(), osl::Piece::owner(), pin(), osl::Piece::ptype(), と osl::SafeCapture::safe_one.
参照元 osl::move_classifier::PawnDropCheckmate< P >::isMember().
const osl::Piece osl::NumEffectState::selectCheapPiece | ( | PieceMask | effect | ) | const |
利きの中から安そうな駒を選ぶ
numEffectState.cc の 100 行で定義されています。
参照先 osl::PieceMask::any(), osl::PieceMask::clearBit(), osl::Piece::EMPTY(), osl::PieceMask::getMask(), osl::PieceTable::getPtypeOf(), osl::KING, osl::LANCE, osl::eval::min(), osl::PAWN, osl::Piece_Table, osl::SimpleState::pieceOf(), osl::SimpleState::pieces, promoted, と osl::PieceMask::selectBit().
参照元 osl::move_probability::ToEffect::find(), findCheapAttack(), と findCheapAttackNotBy().
void osl::NumEffectState::showEffect | ( | std::ostream & | os | ) | const |
bool osl::NumEffectState::wasCheckEvasion | ( | Move | last_move | ) | const |
numEffectState.cc の 175 行で定義されています。
参照先 osl::alt(), osl::Board_Table, osl::Move::capturePtypeO(), osl::Move::from(), osl::BoardTable::getShort8Unsafe(), hasEffectAt(), hasEffectIf(), osl::BoardTable::isBetweenSafe(), osl::Move::isCapture(), osl::Move::isDrop(), osl::Move::isNormal(), osl::SimpleState::kingSquare(), osl::Piece::number(), osl::Move::oldPtype(), osl::Piece::owner(), osl::SimpleState::pieceOnBoard(), pin(), pinnedDir(), osl::primDir(), osl::primDirUnsafe(), osl::Move::ptype(), osl::Move::to(), と osl::SimpleState::turn().
bool operator== | ( | const NumEffectState & | st1, | |
const NumEffectState & | st2 | |||
) | [friend] |
駒番に依存した局面(インスタンス)比較をする.
なお、駒番に非依存な局面比較をしたい場合は、oslrecord::CompactBoardや osl::hash::HashKeyを用いる.
numEffectState.h の 35 行で定義されています。
参照元 changedEffects(), changedPieces(), copyFrom(), effectedChanged(), effectedMask(), effectSetAt(), epilogueCapture(), epilogueDrop(), epilogueSimple(), findLongAttackAt(), hasChangedEffects(), isConsistent(), longEffectNumTable(), makeMovePass(), mobilityOf(), NumEffectState(), osl::operator==(), prologueCapture(), prologueDrop(), と prologueSimple().
CArray<uint64_t,2> osl::NumEffectState::king8infos [private] |
KingMobility osl::NumEffectState::king_mobility [private] |
CArray<PieceMask,2> osl::NumEffectState::pieces_onboard [private] |
CArray<PieceMask,2> osl::NumEffectState::pin_or_open [private] |
PieceMask osl::NumEffectState::promoted [private] |
成駒一覧
numEffectState.h の 38 行で定義されています。
参照元 copyFrom(), epilogueCapture(), epilogueSimple(), findAttackAtStrict(), findThreatenedPiece(), forEachOnBoardPtypeStrict(), hasEffectByPtypeStrict(), isConsistent(), NumEffectState(), osl::operator==(), prologueCapture(), prologueSimple(), promotedPieces(), と selectCheapPiece().