敵玉の8近傍の状態を表す. [詳細]
#include <king8Info.h>
Public メソッド | |
King8Info (uint64_t v) | |
uint64_t | uint64Value () const |
unsigned int | dropCandidate () const |
0-7 bit 目を返す | |
unsigned int | liberty () const |
8-15 bit 目を 0-7bitにshiftして返す | |
unsigned int | libertyDropMask () const |
0-15bit | |
unsigned int | libertyCandidate () const |
16-23 bit 目を 0-7bitにshiftして返す | |
unsigned int | moveCandidate2 () const |
24-31 bit 目を 0-7bitにshiftして返す | |
unsigned int | spaces () const |
unsigned int | moves () const |
unsigned int | libertyCount () const |
libertyの数 | |
template<Player P, Direction Dir> | |
unsigned int | moveCandidateDir (NumEffectState const &state, Square target) const |
template<Player P> | |
unsigned int | countMoveCandidate (NumEffectState const &state) const |
unsigned int | countMoveCandidate (Player player, NumEffectState const &state) const |
template<Player P> | |
unsigned int | moveCandidateMask (NumEffectState const &state) const |
template<Player P> | |
bool | hasMoveCandidate (NumEffectState const &state) const |
Static Public メソッド | |
template<Player P> | |
static const King8Info | make (NumEffectState const &state, Square king, PieceMask pinned) |
template<Player P> | |
static const King8Info | make (NumEffectState const &state, Square king) |
static const King8Info | make (Player attack, NumEffectState const &state) |
alt(attack) のking について計算 | |
static const King8Info | makeWithPin (Player attack, NumEffectState const &state, const PieceMask &pinned) |
alt(attack) のking について計算. | |
Static Private メソッド | |
template<Player P, Direction Dir> | |
static uint64_t | hasEffectMask (NumEffectState const &state, Square target, PieceMask pinned, PieceMask on_board_defense) |
alt(P)の玉にDirの方向で迫るcanMoveMaskを計算する. | |
Private 変数 | |
uint64_t | value |
敵玉の8近傍の状態を表す.
王手がかかっている場合も含むことにする. Dirは相手の玉に対してDir方向で王手をかける位置 0-7 : 敵玉以外の利きがなく,自分の利きがある空白 (駒を打つ候補となりうる点) 8-15 : 敵玉がDirに移動可能(王手がかかっている場合は長い利きも延ばす) 16-23 : 空白か味方の駒(利き次第では移動可能になる) 24-31 : 敵玉以外の利きがなく,自分の利きがある空白,敵駒 (OLD 24-31 : 敵玉以外の利きがなく,自分の利きが2つ以上ある空白,敵駒 (駒を動かす候補となりうる点) ) 32-39 : 空白(駒打ち王手の候補) 40-47 : 味方の利き(kingの利きも含んでいる)がある空白,敵駒 48-51 : 敵玉がDirに移動可能(王手がかかっている場合は長い利きも延ばす)な数
king8Info.h の 28 行で定義されています。
osl::checkmate::King8Info::King8Info | ( | uint64_t | v | ) | [inline, explicit] |
king8Info.h の 32 行で定義されています。
参照元 make().
unsigned int osl::checkmate::King8Info::countMoveCandidate | ( | NumEffectState const & | state | ) | const [inline] |
king8Info.h の 95 行で定義されています。
参照先 osl::alt(), と osl::SimpleState::kingSquare().
参照元 osl::checkmate::ProofNumberTable::disproofAfterAllCheck().
unsigned int osl::checkmate::King8Info::countMoveCandidate | ( | Player | player, | |
NumEffectState const & | state | |||
) | const [inline] |
king8Info.h の 108 行で定義されています。
参照先 osl::BLACK.
unsigned int osl::checkmate::King8Info::dropCandidate | ( | ) | const [inline] |
0-7 bit 目を返す
king8Info.h の 49 行で定義されています。
参照先 value.
参照元 osl::checkmate::ProofNumberTable::disproofAfterAllCheck(), と osl::checkmate::operator<<().
uint64_t osl::checkmate::King8Info::hasEffectMask | ( | NumEffectState const & | state, | |
Square | target, | |||
PieceMask | pinned, | |||
PieceMask | on_board_defense | |||
) | [static, private] |
alt(P)の玉にDirの方向で迫るcanMoveMaskを計算する.
P(template) | - 攻撃側のplayer | |
Dir(template) | - 敵玉に迫る方向(shortの8方向) | |
state | - 初期状態 | |
target | - alt(P)の玉があるpotision |
king8Info.cc の 67 行で定義されています。
参照先 osl::alt(), osl::Piece::canMoveOn(), osl::NumEffectState::hasEffectAt(), osl::Piece::isEdge(), osl::Piece::isEmpty(), osl::Piece::isOnBoardByOwner(), と osl::SimpleState::pieceAt().
bool osl::checkmate::King8Info::hasMoveCandidate | ( | NumEffectState const & | state | ) | const [inline] |
king8Info.h の 128 行で定義されています。
unsigned int osl::checkmate::King8Info::liberty | ( | ) | const [inline] |
8-15 bit 目を 0-7bitにshiftして返す
king8Info.h の 54 行で定義されています。
参照先 value.
参照元 osl::move_probability::KingBlockade::blockAll(), osl::checkmate::ProofNumberTable::countLiberty(), osl::checkmate::ProofNumberTable::countLibertyLong(), osl::checkmate::ProofNumberTable::countLibertyShortNotKnight(), osl::checkmate::ProofNumberTable::libertyAfterAllMove(), osl::move_probability::KingBlockade::match(), osl::checkmate::operator<<(), と osl::checkmate::ImmediateCheckmateTable::ptypeDropMask().
unsigned int osl::checkmate::King8Info::libertyCandidate | ( | ) | const [inline] |
unsigned int osl::checkmate::King8Info::libertyCount | ( | ) | const [inline] |
unsigned int osl::checkmate::King8Info::libertyDropMask | ( | ) | const [inline] |
const osl::checkmate::King8Info osl::checkmate::King8Info::make | ( | Player | attack, | |
NumEffectState const & | state | |||
) | [static] |
alt(attack) のking について計算
king8Info.cc の 149 行で定義されています。
参照先 osl::alt(), osl::BLACK, と osl::SimpleState::kingSquare().
const osl::checkmate::King8Info osl::checkmate::King8Info::make | ( | NumEffectState const & | state, | |
Square | king, | |||
PieceMask | pinned | |||
) | [static] |
const osl::checkmate::King8Info osl::checkmate::King8Info::make | ( | NumEffectState const & | state, | |
Square | king | |||
) | [static] |
king8Info.cc の 143 行で定義されています。
参照先 osl::alt().
const osl::checkmate::King8Info osl::checkmate::King8Info::makeWithPin | ( | Player | attack, | |
NumEffectState const & | state, | |||
const PieceMask & | pinned | |||
) | [static] |
alt(attack) のking について計算.
pinが既に求まっている
king8Info.cc の 159 行で定義されています。
参照先 osl::alt(), osl::BLACK, と osl::SimpleState::kingSquare().
unsigned int osl::checkmate::King8Info::moveCandidate2 | ( | ) | const [inline] |
unsigned int osl::checkmate::King8Info::moveCandidateDir | ( | NumEffectState const & | state, | |
Square | target | |||
) | const [inline] |
king8Info.h の 87 行で定義されています。
参照先 osl::NumEffectState::countEffect(), osl::effect_util::AdditionalEffect::hasEffect(), と value.
unsigned int osl::checkmate::King8Info::moveCandidateMask | ( | NumEffectState const & | state | ) | const [inline] |
king8Info.h の 114 行で定義されています。
参照先 osl::alt(), と osl::SimpleState::kingSquare().
参照元 osl::checkmate::ProofNumberTable::libertyAfterAllMove().
unsigned int osl::checkmate::King8Info::moves | ( | ) | const [inline] |
unsigned int osl::checkmate::King8Info::spaces | ( | ) | const [inline] |
king8Info.h の 73 行で定義されています。
参照先 value.
参照元 osl::move_probability::StateInfo::findCheckmateDefender().
uint64_t osl::checkmate::King8Info::uint64Value | ( | ) | const [inline] |
king8Info.h の 46 行で定義されています。
参照先 value.
参照元 osl::checkmate::detail::blockingDiagonalAttack(), osl::checkmate::ImmediateCheckmate::hasCheckmateMove(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDirPiece(), osl::checkmate::detail::hasCheckmateMoveKnight(), osl::NumEffectState::isConsistent(), osl::checkmate::EdgeTable::resetEdgeFromLiberty(), osl::checkmate::detail::slowCheckDrop(), と osl::checkmate::ImmediateCheckmate::slowHasCheckmateMoveDirPiece().
uint64_t osl::checkmate::King8Info::value [private] |
king8Info.h の 30 行で定義されています。
参照元 dropCandidate(), liberty(), libertyCandidate(), libertyCount(), libertyDropMask(), moveCandidate2(), moveCandidateDir(), moves(), spaces(), と uint64Value().