ネームスペース osl::move_generator::addeffect8

構成

class  ShortPieceAction
 promote可能な足の短い駒による利きの生成用 Functor [詳細]
class  GoldAction
 Goldによる利きの生成用 Functor. [詳細]
class  LongPieceAction
 promote可能な足の長い駒による利きの生成用 Functor [詳細]
class  AddEffect8Table

型定義

typedef std::pair< Offset, OffsetOffsetPair
 利きをつける手を生成するためのテーブル.
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)

型定義

利きをつける手を生成するためのテーブル.

addEffect8Table.h22 行で定義されています。

addEffect8Table.h23 行で定義されています。

addEffect8Table.h24 行で定義されています。


関数

template<Player P, Ptype T>
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.tcc222 行で定義されています。

参照先 osl::Board_Table, と osl::BoardTable::getShortOffset().

template<Player P, Ptype T>
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.tcc194 行で定義されています。

参照先 osl::PtypeTable::getEffect(), hasEffect(), osl::Piece::isEdge(), osl::Piece::isEmpty(), osl::Piece::isOnBoardByOwner(), osl::Ptype_Table, と osl::Piece::ptypeO().

template<Player P, class Action >
void osl::move_generator::addeffect8::generateGold ( const NumEffectState &  state,
Position  target,
Action &  action 
) [inline]

drop move

addEffect8.tcc412 行で定義されています。

template<Player P, Ptype T, class Action >
void osl::move_generator::addeffect8::generateLong ( const NumEffectState &  state,
Position  target,
Action &  action 
) [inline]

addEffect8.tcc401 行で定義されています。

参照先 osl::BOOST_STATIC_ASSERT(), osl::canPromote(), と osl::isBasic().

template<Player P, Ptype T, class Action >
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.tcc84 行で定義されています。

参照先 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().

template<Player P, Ptype T, class Action >
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.tcc55 行で定義されています。

参照先 osl::PtypeTable::getEffect(), hasEffect(), osl::Piece::isOnBoardByOwner(), osl::LANCE, osl::Ptype_Table, と osl::Piece::ptypeO().

template<Player P, Ptype T, class Action >
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.tcc238 行で定義されています。

参照先 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().

template<Player P, Ptype T, class Action >
void osl::move_generator::addeffect8::generateShort ( const NumEffectState &  state,
Position  target,
Action &  action 
) [inline]

drop move

addEffect8.tcc386 行で定義されています。

参照先 osl::BOOST_STATIC_ASSERT(), osl::canPromote(), と osl::isBasic().

template<Player P, Ptype T, class Action >
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.tcc28 行で定義されています。

参照先 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().

template<Player P, Ptype T, class Action >
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.tcc157 行で定義されています。

参照先 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.cc30 行で定義されています。

参照先 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 
)
bool osl::move_generator::addeffect8::sameDirection ( int  dx0,
int  dy0,
int  dx1,
int  dy1 
)
 全て クラス ネームスペース ファイル 関数 変数 型定義 列挙型 列挙型の値 フレンド マクロ定義
Sun May 16 09:58:25 2010に生成されました。  doxygen 1.6.3