All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Public Member Functions | Private Types | Private Member Functions | Private Attributes | Friends
osl::state::NumEffectState Class Reference

利きを持つ局面 More...

#include <numEffectState.h>

Inheritance diagram for osl::state::NumEffectState:
Inheritance graph
[legend]
Collaboration diagram for osl::state::NumEffectState:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 NumEffectState (const state::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
 手番の玉が王手状態
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
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
template<bool show_error>
bool isAlmostValidMove (Move move) const
 合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.
bool isAlmostValidMove (Move move, bool show_error=true) const
 合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.
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<osl::Player P, typename Function >
void doUndoSimpleMove (Player2Type< P > player, Square from, Square to, int promoteMask, Function &func)
template<osl::Player P, typename Function >
void doUndoDropMove (Player2Type< P > player, Square to, Ptype ptype, Function &func)
template<osl::Player P, typename Function >
void doUndoCaptureMove (Player2Type< P > player, Square from, Square to, Piece target, int promoteMask, Function &func)
template<class Action >
void forEachEffectOfPiece (Piece piece, Action &action) const
template<osl::Player P, osl::Ptype Type, class Action >
void forEachEffectOfPiece (Square pieceSquare, Action &action) const
template<osl::Player P>
bool hasEffectByWithRemove (Square target, Square removed) const

Private Types

typedef NumEffectState state_t

Private Member Functions

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 Attributes

effect::NumSimpleEffectTable effects
CArray< PieceMask, 2 > pieces_onboard
PieceMask promoted
 成駒一覧
CArray< PieceMask, 2 > pin_or_open
KingMobility king_mobility
CArray< uint64_t, 2 > king8infos

Friends

bool operator== (const NumEffectState &st1, const NumEffectState &st2)
 駒番に依存した局面(インスタンス)比較をする.

Detailed Description

利きを持つ局面

Definition at line 32 of file numEffectState.h.


Member Typedef Documentation

Reimplemented from osl::state::SimpleState.

Definition at line 46 of file numEffectState.h.


Constructor & Destructor Documentation

Definition at line 85 of file numEffectState.cc.


Member Function Documentation

template<Ptype PTYPE>
const mask_t osl::state::NumEffectState::allEffectAt ( Player  P,
Square  target 
) const [inline]

Definition at line 252 of file numEffectState.h.

References effectSetAt(), and piecesOnBoard().

const osl::mask_t osl::state::NumEffectState::allEffectAt ( Player  P,
Ptype  ptype,
Square  target 
) const
template<Ptype PTYPE>
bool osl::state::NumEffectState::anyEffectChanged ( ) const [inline]

Definition at line 136 of file numEffectState.h.

References changedPieces().

const BoardMask osl::state::NumEffectState::changedEffects ( Player  pl) const [inline]
const BoardMask osl::state::NumEffectState::changedEffects ( ) const [inline]

Definition at line 125 of file numEffectState.h.

References osl::BLACK, and osl::WHITE.

const NumBitmapEffect osl::state::NumEffectState::changedPieces ( ) const [inline]
const PieceMask osl::state::NumEffectState::checkShadow ( Player  attack) const [inline]

attack の駒で動くと開き王手になる可能性がある集合

Definition at line 72 of file numEffectState.h.

References osl::alt(), piecesOnBoard(), and pin_or_open.

Definition at line 1038 of file numEffectState.cc.

int osl::state::NumEffectState::countEffect ( Player  player,
Square  target 
) const [inline]

利きの数を数える.

targetが盤をはみ出してはいけない

Definition at line 225 of file numEffectState.h.

References effectSetAt(), and osl::Square::isOnBoard().

Referenced by osl::eval::ml::King25Effect::countEffectAndPieces(), and osl::eval::ml::King25EffectBoth::countEffectAndPiecesBoth().

int osl::state::NumEffectState::countEffect ( Player  player,
Square  target,
PieceMask  pins 
) const [inline]

利きの数を数える.

targetが盤をはみ出してはいけない

Parameters:
pinsこの駒の利きは数えない

Definition at line 239 of file numEffectState.h.

References effectSetAt(), and osl::Square::isOnBoard().

void osl::state::NumEffectState::doCaptureMove ( Square  from,
Square  to,
Piece  target,
int  promoteMask 
) [private]
void osl::state::NumEffectState::doDropMove ( Square  to,
Ptype  ptype 
) [private]

Definition at line 285 of file numEffectState.cc.

References osl::BLACK, and osl::PAWN.

void osl::state::NumEffectState::doSimpleMove ( Square  from,
Square  to,
int  promoteMask 
) [private]
template<Player P, class Function >
void osl::state::NumEffectState::doUndoCaptureMove ( Player2Type< P >  player,
Square  from,
Square  to,
Piece  target,
int  promoteMask,
Function &  func 
) [private]

Referenced by makeUnmakeMove().

template<osl::Player P, typename Function >
void osl::state::NumEffectState::doUndoCaptureMove ( Player2Type< P >  player,
Square  from,
Square  to,
Piece  target,
int  promoteMask,
Function &  func 
)

Definition at line 1044 of file numEffectState.h.

References osl::newPtypeO(), osl::PAWN, and osl::Piece::ptype().

template<Player P, class Function >
void osl::state::NumEffectState::doUndoDropMove ( Player2Type< P >  player,
Square  to,
Ptype  ptype,
Function &  func 
) [private]

Referenced by makeUnmakeMove().

template<osl::Player P, typename Function >
void osl::state::NumEffectState::doUndoDropMove ( Player2Type< P >  player,
Square  to,
Ptype  ptype,
Function &  func 
)

Definition at line 1004 of file numEffectState.h.

References osl::PAWN.

template<Player P, class Function >
void osl::state::NumEffectState::doUndoSimpleMove ( Player2Type< P >  player,
Square  from,
Square  to,
int  promoteMask,
Function &  func 
) [private]

Referenced by makeUnmakeMove().

template<osl::Player P, typename Function >
void osl::state::NumEffectState::doUndoSimpleMove ( Player2Type< P >  player,
Square  from,
Square  to,
int  promoteMask,
Function &  func 
)

Definition at line 961 of file numEffectState.h.

References osl::newPtypeO().

const PieceMask osl::state::NumEffectState::effectedChanged ( Player  pl) const [inline]

前の指手でeffectedMask(pl)が変化したか.

取られた駒は現在の実装ではリストされないようだ.

Definition at line 114 of file numEffectState.h.

References osl::effect::NumSimpleEffectTable::effected_changed_mask, and effects.

Referenced by isConsistent().

const PieceMask osl::state::NumEffectState::effectedMask ( Player  pl) const [inline]

pl からの利きが(1つ以上)ある駒一覧

Definition at line 107 of file numEffectState.h.

References osl::effect::NumSimpleEffectTable::effected_mask, and effects.

Referenced by osl::eval::ml::King25EffectBoth::countEffectAndPiecesBoth(), and isConsistent().

const NumBitmapEffect osl::state::NumEffectState::effectSetAt ( Square  sq) const [inline]
template<osl::Player P>
template 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]
template<osl::Player P>
template 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]

Definition at line 495 of file numEffectState.cc.

References osl::Piece::EMPTY(), and osl::PTYPE_BASIC_MIN.

void osl::state::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]

Definition at line 393 of file numEffectState.cc.

References osl::Piece::EMPTY(), and osl::newPtypeO().

template<Ptype PTYPE>
const Piece osl::state::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

Definition at line 462 of file numEffectState.h.

References osl::Piece::EMPTY(), osl::state::SimpleState::pieceOf(), and target.

template<Ptype PTYPE>
const Piece osl::state::NumEffectState::findAttackAtStrict ( Player  attack,
Square  target 
) const [inline]
const Piece osl::state::NumEffectState::findAttackNotBy ( Player  P,
Square  square,
const PieceMask &  ignore 
) const [inline]
const Piece osl::state::NumEffectState::findCheapAttack ( Player  P,
Square  square 
) const [inline]
Parameters:
P- 利きをつけている側のプレイヤ
square- 調査する場所
Returns:
利きを付けている中で安そうな駒 (複数の場合でもEMPTYにはしない)

Definition at line 519 of file numEffectState.h.

References effectSetAt(), piecesOnBoard(), and selectCheapPiece().

const Piece osl::state::NumEffectState::findCheapAttackNotBy ( Player  P,
Square  square,
const PieceMask &  ignore 
) const [inline]
Parameters:
P- 利きをつけている側のプレイヤ
square- 調査する場所
Returns:
利きを付けている中で安そうな駒 (複数の場合でもEMPTYにはしない)

Definition at line 528 of file numEffectState.h.

References effectSetAt(), osl::state::SimpleState::pieces, piecesOnBoard(), and selectCheapPiece().

template<Player P>
bool osl::state::NumEffectState::findCheckPiece ( Piece attack_piece) const [inline]

王手駒を探す

Returns:
王手かどうか
Parameters:
attack_piece一つの駒による王手の場合はattck_pieceにその駒を入れる 複数の駒による王手の場合はPiece::EMPTY()を入れる
P(template)

Definition at line 552 of file numEffectState.h.

References osl::state::SimpleState::kingSquare().

const Piece osl::state::NumEffectState::findLongAttackAt ( Player  owner,
int  piece,
Direction  d 
) const [inline]

pieceのd方向から長い利きがある場合にその駒を返す。

Parameters:
dpiece からみた向き

Definition at line 485 of file numEffectState.h.

References osl::BLACK, osl::effect::NumSimpleEffectTable::effectedNumTable, effects, osl::Piece::EMPTY(), osl::EMPTY_NUM, osl::inverse(), and osl::state::SimpleState::pieceOf().

Referenced by findLongAttackAt().

const Piece osl::state::NumEffectState::findLongAttackAt ( Player  owner,
Piece  piece,
Direction  d 
) const [inline]
const Piece osl::state::NumEffectState::findLongAttackAt ( Piece  piece,
Direction  d 
) const [inline]

Definition at line 501 of file numEffectState.h.

References findLongAttackAt(), osl::Piece::isPiece(), and osl::Piece::owner().

const Piece osl::state::NumEffectState::findLongAttackAt ( Square  square,
Direction  d 
) const [inline]
template<Player P, class Action >
void osl::state::NumEffectState::forEachEffect ( const PieceMask &  pieces,
Square  sq,
Action &  action 
) const [inline, private]

Definition at line 712 of file numEffectState.h.

References osl::state::SimpleState::pieceOf().

template<Player P, class Action >
void osl::state::NumEffectState::forEachEffect ( Square  sq,
Action &  action 
) const [inline]

sq への利きを持つ各駒に関して処理を行う.

Parameters:
actionたとえば AlwaysMoveAction

Definition at line 742 of file numEffectState.h.

References effectSetAt(), and piecesOnBoard().

template<Player P, class Action >
void osl::state::NumEffectState::forEachEffect ( Square  sq,
Action &  action,
const PieceMask &  pin 
) const [inline]

sq にある駒を取る move を生成して action の member を呼び出す.

Parameters:
pin無視する駒
actionたとえば AlwaysMoveAction

Definition at line 753 of file numEffectState.h.

References effectSetAt(), and piecesOnBoard().

template<Player P, class Action >
void osl::state::NumEffectState::forEachEffectNotBy ( Square  sq,
Piece  piece,
Action &  action 
) const [inline]

sq に移動する move を生成して action の member を呼び出す

Parameters:
actionたとえば AlwayMoveAction
pieceこれ以外の駒を使う

Definition at line 766 of file numEffectState.h.

References effectSetAt(), osl::Piece::number(), osl::state::SimpleState::pieces, and piecesOnBoard().

template<Player P, Ptype Type, class Action >
void osl::state::NumEffectState::forEachEffectOfPiece ( Square  pieceSquare,
Action &  action 
) const

pieceSquareにある駒によって利きを受けるすべてのsquare (空白含む)について actionを実行する

SimpleState より移植: ImmediateAddSupportがなければ消せる

template<class Action >
void osl::state::NumEffectState::forEachEffectOfPiece ( Piece  piece,
Action &  action 
) const
template<class Action >
void osl::state::NumEffectState::forEachEffectOfPiece ( Piece  piece,
Action &  action 
) const
template<osl::Player P, osl::Ptype Type, class Action >
void osl::state::NumEffectState::forEachEffectOfPiece ( Square  pieceSquare,
Action &  action 
) const

Definition at line 1144 of file numEffectState.h.

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::state::NumEffectState::forEachEffectOfPieceDir ( Square  ,
Action &  ,
Int2Type< false >   
) const [inline, private]

Definition at line 774 of file numEffectState.h.

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::state::NumEffectState::forEachEffectOfPieceDir ( Square  pieceSquare,
Action &  action,
Int2Type< true >   
) const [inline, private]

Definition at line 776 of file numEffectState.h.

References osl::state::SimpleState::pieceAt().

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::state::NumEffectState::forEachEffectOfPieceDir ( Square  pieceSquare,
Action &  action 
) const [inline, private]

Definition at line 782 of file numEffectState.h.

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::state::NumEffectState::forEachEffectOfPieceLongDir ( Square  ,
Action &  ,
Int2Type< false >   
) const [inline, private]

Definition at line 786 of file numEffectState.h.

template<Player P, Ptype Type, class Action , Direction Dir>
void osl::state::NumEffectState::forEachEffectOfPieceLongDir ( Square  pieceSquare,
Action &  action,
Int2Type< true >   
) const [inline, private]
template<Player P, Ptype Type, class Action , Direction Dir>
void osl::state::NumEffectState::forEachEffectOfPieceLongDir ( Square  pieceSquare,
Action &  action 
) const [inline, private]

Definition at line 799 of file numEffectState.h.

template<Player P, Ptype T, typename F >
void osl::state::NumEffectState::forEachOnBoard ( F &  func) const [inline]

T は isBasic でなくても動くが unpromote(T) の結果と同じ.

Definition at line 685 of file numEffectState.h.

References osl::state::SimpleState::pieceOf(), and piecesOnBoard().

template<Player P, Ptype T, typename F >
void osl::state::NumEffectState::forEachOnBoardPtypeStrict ( F &  func) const [inline]

T の成不成を区別

Definition at line 697 of file numEffectState.h.

References osl::isPromoted(), osl::state::SimpleState::pieceOf(), piecesOnBoard(), and promoted.

template<Player P>
bool osl::state::NumEffectState::hasEffectAt ( Square  target) const [inline]

対象とするマスにあるプレイヤーの利きがあるかどうか.

Parameters:
player攻撃側
target対象のマス

Definition at line 283 of file numEffectState.h.

References effectSetAt(), and osl::Square::isOnBoard().

Referenced by osl::eval::ml::SilverFeatures::canRetreat(), osl::eval::ml::GoldFeatures::canRetreat(), inCheck(), main(), and NumEffectState().

bool osl::state::NumEffectState::hasEffectAt ( Player  player,
Square  target 
) const [inline]

対象とするマスにあるプレイヤーの利きがあるかどうか.

Parameters:
player攻撃側
target対象のマス

Definition at line 294 of file numEffectState.h.

References effectSetAt(), and osl::Square::isOnBoard().

bool osl::state::NumEffectState::hasEffectAt ( Player  P,
Square  target,
Piece attackerPiece 
) const [inline]

Definition at line 556 of file numEffectState.h.

References osl::BLACK, and target.

template<Player P>
bool osl::state::NumEffectState::hasEffectAt ( Square  target,
Piece attackerPiece 
) const [inline]
Parameters:
P(template)- 利きをつけている側のプレイヤ
target- 利きをつけられた場所
attackerPiece- multiple attackの場合はPiece::EMPTY() そうでないなら利きをつけている駒を返す

Definition at line 570 of file numEffectState.h.

References effectSetAt(), osl::Piece::EMPTY(), osl::state::SimpleState::pieceOf(), and piecesOnBoard().

bool osl::state::NumEffectState::hasEffectByNotPinned ( Player  pl,
Square  target 
) const [inline]

pinされている駒以外からの利きがある.

Definition at line 387 of file numEffectState.h.

References effectSetAt(), osl::Square::isOnBoard(), piecesOnBoard(), and pinOrOpen().

bool osl::state::NumEffectState::hasEffectByNotPinnedAndKing ( Player  pl,
Square  target 
) const [inline]

{pinされている駒, 玉以外}からの利きがある.

Definition at line 378 of file numEffectState.h.

References effectSetAt(), osl::Square::isOnBoard(), osl::KING, piecesOnBoard(), and pinOrOpen().

bool osl::state::NumEffectState::hasEffectByPiece ( Piece  attack,
Square  target 
) const [inline]

駒attack が target に利きを持つか (旧hasEffectToと統合)

Parameters:
target対象のマス

Definition at line 409 of file numEffectState.h.

References effectSetAt(), osl::Square::isOnBoard(), osl::Piece::isPiece(), and osl::Piece::number().

template<Ptype PTYPE>
bool osl::state::NumEffectState::hasEffectByPtype ( Player  attack,
Square  target 
) const [inline]

target に ptype の利きがあるか? 成不成を区別しない

Definition at line 314 of file numEffectState.h.

References target.

template<Ptype PTYPE>
bool osl::state::NumEffectState::hasEffectByPtypeStrict ( Player  attack,
Square  target 
) const [inline]

target に ptype の利きがあるか? 成不成を区別

Definition at line 322 of file numEffectState.h.

References osl::isPromoted(), promoted, and target.

template<osl::Player P>
bool osl::state::NumEffectState::hasEffectByWithRemove ( Square  target,
Square  removed 
) const
template<Player P>
bool osl::state::NumEffectState::hasEffectByWithRemove ( Square  target,
Square  removed 
) const
bool osl::state::NumEffectState::hasEffectByWithRemove ( Player  player,
Square  target,
Square  removed 
) const [inline]

Definition at line 449 of file numEffectState.h.

References osl::BLACK, and target.

bool osl::state::NumEffectState::hasEffectIf ( PtypeO  ptypeo,
Square  attacker,
Square  target 
) const [inline]

attackerにptypeoの駒がいると仮定した場合にtargetに利きがあるかどうか を stateをupdateしないで確かめる.

targetSquareは空白でも良い 盤上の駒を動かす事を検討しているときはに, 自分自身の陰に入って利かないと見なされることがある

Definition at line 424 of file numEffectState.h.

References osl::Board_Table, osl::PtypeTable::getEffect(), osl::BoardTable::getShortOffset(), osl::EffectContent::hasEffect(), osl::EffectContent::hasUnblockableEffect(), osl::state::SimpleState::isEmptyBetween(), osl::EffectContent::offset(), osl::Ptype_Table, and target.

Referenced by pinnedCanMoveTo().

template<Direction Dir, Player P>
bool osl::state::NumEffectState::hasEffectInDirection ( Square  to) const [inline]

あるマスにあるDirectionでの長い利きがあるかどうか.

64bit版対応済み

Definition at line 336 of file numEffectState.h.

References osl::BLACK, osl::Board_Table, osl::BOOST_STATIC_ASSERT(), effectSetAt(), osl::BoardTable::getLongDirection(), osl::state::SimpleState::pieceOf(), pieces_onboard, piecesOnBoard(), and osl::Piece::square().

bool osl::state::NumEffectState::hasEffectNotBy ( Player  player,
Piece  piece,
Square  target 
) const [inline]

対象とするマスにあるプレイヤーの(ただしある駒以外)利きがあるかどうか.

Parameters:
player攻撃側
piece攻撃側の駒
target対象のマス

Definition at line 368 of file numEffectState.h.

References effectSetAt(), osl::Piece::number(), osl::Piece::owner(), pieces_onboard, and piecesOnBoard().

template<Ptype PTYPE>
bool osl::state::NumEffectState::hasLongEffectAt ( Player  P,
Square  to 
) const [inline]

あるマスにPTYPEの長い利きがあるかどうか.

Definition at line 305 of file numEffectState.h.

References osl::BISHOP, osl::BOOST_STATIC_ASSERT(), osl::LANCE, and osl::ROOK.

bool osl::state::NumEffectState::hasMultipleEffectAt ( Player  player,
Square  target 
) const [inline]

二つ以上の駒から利きがある.

そもそも利きがない場合も呼ばれる

Parameters:
player攻撃側
target対象のマス

Definition at line 398 of file numEffectState.h.

References effectSetAt().

uint64_t osl::state::NumEffectState::Iking8Info ( Player  king) const [inline]

Definition at line 80 of file numEffectState.h.

References king8infos.

Referenced by osl::eval::ml::King8EffectAll::eval().

bool osl::state::NumEffectState::inCheck ( Player  P) const [inline]

Pの玉が王手状態

Definition at line 90 of file numEffectState.h.

References osl::alt(), hasEffectAt(), osl::Square::isPieceStand(), and osl::state::SimpleState::kingSquare().

bool osl::state::NumEffectState::inCheck ( ) const [inline]

手番の玉が王手状態

Definition at line 100 of file numEffectState.h.

References inCheck(), and osl::state::SimpleState::turn().

Referenced by inCheck().

template<bool show_error>
bool osl::state::NumEffectState::isAlmostValidMove ( Move  move) const

合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.

Pをtemplate引数にできると少しは速くなりそう 局面に依存する検査でも,玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.

Parameters:
showError(template)- falseを返す時には何か表示する.
move- 手

Reimplemented from osl::state::SimpleState.

Definition at line 813 of file numEffectState.cc.

References osl::Move::from(), osl::Move::isNormal(), osl::Square::isPieceStand(), osl::Move::isValid(), osl::Move::player(), and osl::Move::to().

Referenced by makeUnmakeMove().

bool osl::state::NumEffectState::isAlmostValidMove ( Move  move,
bool  show_error = true 
) const

合法手かどうかを簡単に検査する.局面に依存するチェックのみ. ルール上指せない手である可能性がある場合は,isValidMove を用いる.

局面に依存する検査でも,玉の素抜きや王手を防いでいるか, 千日手,打歩詰かどうかは検査しない.

Reimplemented from osl::state::SimpleState.

Definition at line 837 of file numEffectState.cc.

bool osl::state::NumEffectState::isConsistent ( bool  showError = true) const
bool osl::state::NumEffectState::isConsistent ( const NumEffectState prev,
Move  moved,
bool  show_error = true 
) const
bool osl::state::NumEffectState::isOnBoardNum ( int  num) const [inline]

Definition at line 147 of file numEffectState.h.

References osl::BLACK, piecesOnBoard(), and osl::WHITE.

Definition at line 34 of file numEffectState.cc.

Definition at line 160 of file numEffectState.h.

References king_mobility, and osl::Square::makeDirect().

Referenced by kingMobilityOfPlayer().

玉がd方向にどこまで動けるかを返す

Parameters:
p注目する玉のプレイヤ
dpiece からみた向き

Definition at line 169 of file numEffectState.h.

References osl::BLACK, osl::inverse(), and kingMobilityAbs().

template<Ptype PTYPE>
const mask_t osl::state::NumEffectState::longEffectAt ( Square  target) const [inline]

Definition at line 257 of file numEffectState.h.

References effectSetAt().

Referenced by longEffectAt().

template<Ptype PTYPE>
const mask_t osl::state::NumEffectState::longEffectAt ( Square  target,
Player  owner 
) const [inline]

Definition at line 261 of file numEffectState.h.

References piecesOnBoard(), and target.

const mask_t osl::state::NumEffectState::longEffectAt ( Square  target) const [inline]

Definition at line 265 of file numEffectState.h.

References effectSetAt().

const mask_t osl::state::NumEffectState::longEffectAt ( Square  target,
Player  owner 
) const [inline]

Definition at line 269 of file numEffectState.h.

References longEffectAt(), and piecesOnBoard().

template<Ptype PTYPE>
bool osl::state::NumEffectState::longEffectChanged ( ) const [inline]

Definition at line 132 of file numEffectState.h.

References changedPieces().

const EffectedNumTable& osl::state::NumEffectState::longEffectNumTable ( ) const [inline]

Definition at line 101 of file numEffectState.h.

References osl::effect::NumSimpleEffectTable::effectedNumTable, and effects.

Referenced by makePinOpenDir(), and recalcPinOpen().

template<osl::Player P>
template void osl::NumEffectState::makeKing8Info< WHITE > ( ) [private]

Definition at line 40 of file numEffectState.cc.

References king8infos.

Definition at line 874 of file numEffectState.cc.

References osl::alt(), osl::Square::isPieceStand(), and target.

Referenced by NumEffectState().

Definition at line 891 of file numEffectState.cc.

template<Direction DIR>
void osl::state::NumEffectState::makePinOpenDir ( Square  target,
PieceMask &  pins,
PieceMask const &  onBoard,
Player  defense 
) [inline, private]
template<class Function >
void osl::state::NumEffectState::makeUnmakeMove ( Move  move,
Function &  f 
) [inline]

Definition at line 641 of file numEffectState.h.

References osl::BLACK, and osl::Move::player().

template<Player P, class Function >
void osl::state::NumEffectState::makeUnmakeMove ( Player2Type< P >  player,
Move  move,
Function &  f 
) [inline]
template<class Function >
void osl::state::NumEffectState::makeUnmakePass ( Function &  f) [inline]

Definition at line 634 of file numEffectState.h.

References osl::state::SimpleState::changeTurn(), and osl::Square::STAND().

Referenced by makeUnmakeMove().

Square osl::state::NumEffectState::mobilityOf ( Direction  d,
int  num 
) const [inline]

Definition at line 156 of file numEffectState.h.

References mobilityOf(), and osl::Piece::number().

const PieceMask& osl::state::NumEffectState::piecesOnBoard ( Player  p) const [inline]
const PieceMask osl::state::NumEffectState::pin ( Player  king) const [inline]

Definition at line 67 of file numEffectState.h.

References piecesOnBoard(), and pin_or_open.

template<Player P>
bool osl::state::NumEffectState::pinnedCanMoveTo ( Piece  p,
Square  to 
) const [inline]

pinされた駒pがtoに動けるか? pinに関係がなければtoへ動けるという前提

Definition at line 199 of file numEffectState.h.

References osl::Board_Table, osl::BoardTable::getShort8Unsafe(), hasEffectIf(), osl::Piece::owner(), osl::primDir(), osl::primDirUnsafe(), osl::Piece::ptypeO(), and osl::Piece::square().

bool osl::state::NumEffectState::pinnedCanMoveTo ( Piece  p,
Square  to 
) const [inline]

Definition at line 207 of file numEffectState.h.

References osl::BLACK, and osl::Piece::owner().

template<Player P>
Direction osl::state::NumEffectState::pinnedDir ( Piece  p) const [inline]

pinされた駒がPのKingから見てどの方向か? Pから見たdirectionを返す

Definition at line 180 of file numEffectState.h.

References osl::Board_Table, osl::BoardTable::getShort8(), osl::Piece::number(), osl::Piece::owner(), pinOrOpen(), and osl::Piece::square().

Definition at line 187 of file numEffectState.h.

References osl::BLACK, and osl::Piece::owner().

PieceMask osl::state::NumEffectState::pinOrOpen ( Player  king) const [inline]

Definition at line 76 of file numEffectState.h.

References pin_or_open.

Referenced by hasEffectByNotPinned(), hasEffectByNotPinnedAndKing(), and pinnedDir().

template<osl::Player P>
template 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]
template<osl::Player P>
template 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]
template<osl::Player P>
template 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]
const PieceMask osl::state::NumEffectState::promotedPieces ( ) const [inline]

Definition at line 66 of file numEffectState.h.

References promoted.

void osl::state::NumEffectState::recalcPinOpen ( Square  changed,
Direction lastDir,
Player  defense 
) [inline, private]
const osl::Piece osl::state::NumEffectState::selectCheapPiece ( PieceMask  effect) const

利きの中から安そうな駒を選ぶ

Definition at line 90 of file numEffectState.cc.

References osl::Piece::EMPTY(), osl::KING, osl::LANCE, osl::eval::min(), and osl::PAWN.

Referenced by findCheapAttack(), and findCheapAttackNotBy().

void osl::state::NumEffectState::showEffect ( std::ostream &  os) const

Friends And Related Function Documentation

bool operator== ( const NumEffectState st1,
const NumEffectState st2 
) [friend]

駒番に依存した局面(インスタンス)比較をする.

なお、駒番に非依存な局面比較をしたい場合は、osl::record::CompactBoardや osl::hash::HashKeyを用いる.


Member Data Documentation

CArray<uint64_t,2> osl::state::NumEffectState::king8infos [private]

Definition at line 43 of file numEffectState.h.

Referenced by copyFrom(), Iking8Info(), makeKing8Info(), and osl::state::operator==().

CArray<PieceMask,2> osl::state::NumEffectState::pieces_onboard [private]
CArray<PieceMask,2> osl::state::NumEffectState::pin_or_open [private]

The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines