My Project
|
Pの王をopen checkにする手でないことをチェック. More...
#include <kingOpenMove.h>
Static Public Member Functions | |
static bool | isMember (const NumEffectState &state, Ptype, Square from, Square to) |
king が59 rookが51->61の時,差は OFFSET -8 -> U OFFSET +8 -> D とはなるので,一直線のような気がする.ただし,そもとも, 59 - 51はpinにはならないし,今は U -> DはopenではないとしているのでOK | |
static bool | isMember (const NumEffectState &state, Ptype ptype, Square from, Square to, Square exceptFor) |
Static Private Member Functions | |
template<bool hasException> | |
static bool | isMemberMain (const NumEffectState &state, Ptype ptype, Square from, Square to, Square exceptFor) |
Pの王をopen checkにする手でないことをチェック.
Definition at line 21 of file kingOpenMove.h.
|
inlinestatic |
exceptFor | ここからの利きは除外 |
Definition at line 45 of file kingOpenMove.h.
|
inlinestatic |
king が59 rookが51->61の時,差は OFFSET -8 -> U OFFSET +8 -> D とはなるので,一直線のような気がする.ただし,そもとも, 59 - 51はpinにはならないし,今は U -> DはopenではないとしているのでOK
Definition at line 31 of file kingOpenMove.h.
References osl::Board_Table, osl::BoardTable::getShort8(), osl::BoardTable::getShort8Unsafe(), osl::Piece::isPieceNum(), osl::SimpleState::kingSquare(), osl::Piece::number(), osl::SimpleState::pieceAt(), osl::NumEffectState::pinOrOpen(), and osl::PieceMask::test().
Referenced by osl::move_classifier::SafeMove< P >::isMember(), and osl::move_action::NotKingOpenFilter< P, OrigAction >::isNotKingOpenMove().
|
staticprivate |
守っている玉が動く状況では呼ばない
openになってしまうかどうかのチェック
移動元が王の8方向でないか openにならない
そのptypeoがそのoffsetを動きとして持つか 注: 持つ => safe でない => false を返す
Definition at line 6 of file kingOpenMove.cc.
References osl::alt(), osl::Board_Table, osl::PtypeTable::getEffect(), osl::BoardTable::getShortOffsetNotKnight(), osl::EffectContent::hasEffect(), osl::Piece::isEmpty(), osl::SimpleState::isEmptyBetween(), osl::Square::isOnBoard(), osl::Piece::isOnBoardByOwner(), osl::Square::isPieceStand(), osl::SimpleState::pieceAt(), osl::Ptype_Table, osl::Piece::ptypeO(), and osl::Offset::zero().