構成 | |
class | ShortPieceAction |
promote可能な足の短い駒による利きの生成用 Functor [詳細] | |
class | GoldAction |
Goldによる利きの生成用 Functor. [詳細] | |
class | LongPieceAction |
promote可能な足の長い駒による利きの生成用 Functor [詳細] | |
class | AddEffect8Table |
型定義 | |
typedef std::pair< Offset, Offset > | OffsetPair |
利きをつける手を生成するためのテーブル. | |
typedef std::pair< Position, Offset > | PO |
typedef std::pair< Position, OffsetPair > | POO |
関数 | |
template<Player P, Ptype T, class Action > | |
void | generateShortDrop (NumEffectState const &state, Position target, Action &action) |
5x5領域への駒のdropによる手生成. | |
template<Player P, Ptype T, class Action > | |
void | generateLongDropWithOffset (NumEffectState const &state, Position to, Position from, Offset offset, int countMax, Action &action) |
方向を決めて,long dropを作成する. | |
template<Player P, Ptype T, class Action > | |
void | generateLongDrop (NumEffectState const &state, Position target, Action &action) |
長い利きを持つ駒のdropによる手生成. | |
template<Player P, Ptype T, class Action > | |
void | generateShortMove (NumEffectState const &state, Piece attacker, Position target, Action &action) |
unblockableな動きでunblockableな利きをつける手生成. | |
template<Player P, Ptype T> | |
bool | canAddLongEffect (NumEffectState const &state, Position from, Position to, Piece &blocker, Offset offset) |
fromにプレイヤーPの種類Tの駒があったら利きがある盤面かどうか. | |
template<Player P, Ptype T> | |
bool | canAddLongEffect (NumEffectState const &state, Position from, Position to, Piece &blocker) |
fromにプレイヤーPの種類Tの駒があったら利きがある盤面かどうか. | |
template<Player P, Ptype T, class Action > | |
void | generateLongMove (NumEffectState const &state, Piece attacker, Position target, Action &action) |
長い利きも持つ駒の手生成. | |
template<Player P, Ptype T, class Action > | |
void | generateShort (const NumEffectState &state, Position target, Action &action) |
template<Player P, Ptype T, class Action > | |
void | generateLong (const NumEffectState &state, Position target, Action &action) |
template<Player P, class Action > | |
void | generateGold (const NumEffectState &state, Position target, Action &action) |
bool | sameDirection (int dx0, int dy0, int dx1, int dy1) |
bool | hasUnblockableEffect (Ptype ptype, int dx, int dy) |
targetから(+dx,+dy)の位置にある黒の種類ptypeの駒がdirectな利きを持つか. | |
bool | hasShortEffect (Ptype ptype, int dx, int dy) |
bool | hasEffect (Ptype ptype, int dx, int dy) |
typedef std::pair<Offset,Offset> osl::move_generator::addeffect8::OffsetPair |
利きをつける手を生成するためのテーブル.
addEffect8Table.h の 22 行で定義されています。
typedef std::pair<Position,Offset> osl::move_generator::addeffect8::PO |
addEffect8Table.h の 23 行で定義されています。
typedef std::pair<Position,OffsetPair> osl::move_generator::addeffect8::POO |
addEffect8Table.h の 24 行で定義されています。
bool osl::move_generator::addeffect8::canAddLongEffect | ( | NumEffectState const & | state, | |
Position | from, | |||
Position | to, | |||
Piece & | blocker | |||
) | [inline] |
fromにプレイヤーPの種類Tの駒があったら利きがある盤面かどうか.
追加も含める. 間が全部空白なら利きがあるのが前提.
P(template) | - 利きをつけるプレイヤー | |
T | - 駒の種類(ROOK, BISHOP, LANCEのいずれか) | |
state | - 盤面の状態 | |
from | - 駒があると仮定するマス | |
to | - 利きの有無を判定したいマス | |
blocker | - 利きがない時にブロックしている駒を返す |
addEffect8.tcc の 222 行で定義されています。
bool osl::move_generator::addeffect8::canAddLongEffect | ( | NumEffectState const & | state, | |
Position | from, | |||
Position | to, | |||
Piece & | blocker, | |||
Offset | offset | |||
) | [inline] |
fromにプレイヤーPの種類Tの駒があったら利きがある盤面かどうか.
追加も含める. 間が全部空白なら利きがあるのが前提.
P(template) | - 利きをつけるプレイヤー | |
T | - 駒の種類(ROOK, BISHOP, LANCEのいずれか) | |
state | - 盤面の状態 | |
from | - 駒があると仮定するマス | |
to | - 利きの有無を判定したいマス | |
blocker | - 利きがない時にブロックしている駒を返す | |
offset | - toからfromへのoffset(redundant) |
addEffect8.tcc の 194 行で定義されています。
参照先 osl::PtypeTable::getEffect(), hasEffect(), osl::Piece::isEdge(), osl::Piece::isEmpty(), osl::Piece::isOnBoardByOwner(), osl::Ptype_Table, と osl::Piece::ptypeO().
void osl::move_generator::addeffect8::generateGold | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
drop move
addEffect8.tcc の 412 行で定義されています。
void osl::move_generator::addeffect8::generateLong | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
addEffect8.tcc の 401 行で定義されています。
参照先 osl::BOOST_STATIC_ASSERT(), osl::canPromote(), と osl::isBasic().
void osl::move_generator::addeffect8::generateLongDrop | ( | NumEffectState const & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
長い利きを持つ駒のdropによる手生成.
追加利きも生成する.
P(template) | - 手番のプレイヤー | |
T(template) | - 置こうとする駒の種類(当然basic) | |
state | - 盤面 | |
target | - 相手の玉のposition(redundantだが) | |
action | - 手生成のcallback |
addEffect8.tcc の 84 行で定義されています。
参照先 osl::move_generator::Add_Effect8_Table, osl::BISHOP, osl::Offset::blackOffset(), osl::BOOST_STATIC_ASSERT(), osl::move_generator::addeffect8::AddEffect8Table::getLongDrop2Position(), osl::move_generator::addeffect8::AddEffect8Table::getLongDropDirect(), osl::move_generator::addeffect8::AddEffect8Table::getLongDropPosition(), osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::ROOK, と osl::Offset::zero().
void osl::move_generator::addeffect8::generateLongDropWithOffset | ( | NumEffectState const & | state, | |
Position | to, | |||
Position | from, | |||
Offset | offset, | |||
int | countMax, | |||
Action & | action | |||
) | [inline] |
方向を決めて,long dropを作成する.
P(template) | - 手番のプレイヤー | |
T(template) | - 置こうとする駒の種類(当然basic) | |
state | - 盤面 | |
to | - 利きを追加する点 | |
from | - 置き始める点 | |
offset | - 次に置く点へのoffset | |
action | - 手生成のcallback |
addEffect8.tcc の 55 行で定義されています。
参照先 osl::PtypeTable::getEffect(), hasEffect(), osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::Ptype_Table, と osl::Piece::ptypeO().
void osl::move_generator::addeffect8::generateLongMove | ( | NumEffectState const & | state, | |
Piece | attacker, | |||
Position | target, | |||
Action & | action | |||
) | [inline] |
長い利きも持つ駒の手生成.
P(template) | - 攻撃側のプレイヤー | |
T(template) | - 攻撃側の駒の種類 | |
isPromote(template) | - 成っての攻撃(成れるかは内部でチェック) | |
state | - 局面 | |
attacker | - 攻撃しようとする駒 | |
from | - 攻撃しようとする駒の位置 | |
target | - 攻撃しようとするマス |
addEffect8.tcc の 238 行で定義されています。
参照先 osl::move_generator::Add_Effect8_Table, osl::BISHOP, osl::BLACK, osl::Offset::blackOffset(), osl::Board_Table, osl::canPromote(), osl::Position::canPromote(), osl::Piece::EMPTY(), osl::move_generator::addeffect8::AddEffect8Table::getBetweenOffset(), osl::BoardTable::getLongDirection(), osl::move_generator::addeffect8::AddEffect8Table::getLongMoveOffset(), osl::move_generator::addeffect8::AddEffect8Table::getShortMoveOffset(), osl::Piece::isEdge(), osl::Piece::isEmpty(), osl::Position::isOnBoard(), osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::longToShort(), osl::Piece::number(), osl::Piece::position(), osl::primDir(), osl::ROOK, と osl::Offset::zero().
void osl::move_generator::addeffect8::generateShort | ( | const NumEffectState & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
drop move
addEffect8.tcc の 386 行で定義されています。
参照先 osl::BOOST_STATIC_ASSERT(), osl::canPromote(), と osl::isBasic().
void osl::move_generator::addeffect8::generateShortDrop | ( | NumEffectState const & | state, | |
Position | target, | |||
Action & | action | |||
) | [inline] |
5x5領域への駒のdropによる手生成.
BISHOPやROOKは敵の利きのない場合のみ生成 -> pinned以外の利きに変更(2009/12/24)
P(template) | - 手番のプレイヤー | |
T(template) | - 置こうとする駒の種類(当然basic) | |
state | - 盤面 | |
target | - 相手の玉のposition(redundantだが) | |
action | - 手生成のcallback |
addEffect8.tcc の 28 行で定義されています。
参照先 osl::move_generator::Add_Effect8_Table, osl::BISHOP, osl::move_generator::addeffect8::AddEffect8Table::getDropPosition(), osl::Position::isPieceStand(), osl::PAWN, osl::Position::positionForBlack(), osl::ROOK, と osl::Position::x().
void osl::move_generator::addeffect8::generateShortMove | ( | NumEffectState const & | state, | |
Piece | attacker, | |||
Position | target, | |||
Action & | action | |||
) | [inline] |
unblockableな動きでunblockableな利きをつける手生成.
P(template) | - 攻撃側のプレイヤー | |
T(template) | - 攻撃側の駒の種類 | |
state | - 局面 | |
from | - 攻撃しようとする駒の位置 | |
target | - 攻撃しようとするマス |
addEffect8.tcc の 157 行で定義されています。
参照先 osl::move_generator::Add_Effect8_Table, osl::Offset::blackOffset(), osl::Position::canPromote(), osl::move_generator::addeffect8::AddEffect8Table::getShortMoveOffset(), osl::isBasic(), osl::Position::isEdge(), osl::Piece::isEmpty(), osl::Position::isOnBoard(), osl::KNIGHT, osl::Piece::number(), osl::PAWN, osl::Piece::position(), と osl::Offset::zero().
bool osl::move_generator::addeffect8::hasEffect | ( | Ptype | ptype, | |
int | dx, | |||
int | dy | |||
) |
addEffect8Table.cc の 30 行で定義されています。
参照先 osl::BLACK, osl::PtypeTable::getEffect(), osl::EffectContent::hasEffect(), osl::newPtypeO(), と osl::Ptype_Table.
参照元 osl::search::QuiescenceGenerator< P >::attackSilverWithPawn(), osl::rating::DefenseKing8::blocking(), canAddLongEffect(), osl::rating::CountEffect2::count(), osl::checkmate::ProofNumberTable::countLiberty(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::search::QuiescenceGenerator< P >::escapeByMoveOnly(), osl::checkmate::Dfpn::generateCheck(), generateLongDropWithOffset(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDir(), osl::importantMove(), osl::PtypeTable::init(), osl::move_generator::addeffect8::AddEffect8Table::initLongDropPosition(), osl::move_generator::addeffect8::AddEffect8Table::initMoveOffset(), osl::move_classifier::AttackDefenceAroundKing< P >::isMember(), osl::move_classifier::KingOpenMove< P >::isMemberMain(), osl::checkmate::ProofNumberTable::libertyAfterAllMove(), osl::rating::DefenseKing8::matchDrop(), osl::rating::Karanari::matchGeneral(), osl::rating::DefenseKing8::matchMove(), osl::checkmate::King8Info::moveCandidateDir(), osl::threatmate::TreePredictor::predict(), osl::threatmate::MlPredictor::predict(), osl::threatmate::KfendPredictor::predict(), osl::threatmate::TreePredictor::probability(), osl::ntesuki::NtesukiMoveGenerator::setOrder(), osl::annotate::ThreatmateIfMorePieces::suitable(), と osl::search::SearchState2Core::tryThreatmate().
bool osl::move_generator::addeffect8::hasShortEffect | ( | Ptype | ptype, | |
int | dx, | |||
int | dy | |||
) |
bool osl::move_generator::addeffect8::hasUnblockableEffect | ( | Ptype | ptype, | |
int | dx, | |||
int | dy | |||
) |
targetから(+dx,+dy)の位置にある黒の種類ptypeの駒がdirectな利きを持つか.
addEffect8Table.cc の 16 行で定義されています。
参照先 osl::BLACK, osl::PtypeTable::getEffect(), osl::EffectContent::hasUnblockableEffect(), osl::newPtypeO(), と osl::Ptype_Table.
参照元 osl::move_generator::addeffect8::AddEffect8Table::initDropPosition(), osl::move_generator::addeffect8::AddEffect8Table::initLongDropPosition(), と osl::move_generator::addeffect8::AddEffect8Table::initMoveOffset().
bool osl::move_generator::addeffect8::sameDirection | ( | int | dx0, | |
int | dy0, | |||
int | dx1, | |||
int | dy1 | |||
) |