#include <boardTable.h>
Public メソッド | |
const Offset | getOffsetForBlack (Direction dir) const |
黒にとってのoffsetを返す | |
int | getDxForBlack (Direction dir) const |
int | getDyForBlack (Direction dir) const |
template<Player P> | |
const Offset | getOffset (Direction dir) const |
const Offset | getOffset (Player pl, Direction dir) const |
const Square | nextSquare (Player P, Square pos, Direction dr) const |
next position from pos for player P. | |
BoardTable () | |
template<Player P> | |
Direction | getLongDirection (Offset32 offset32) const |
Direction | getLongDirection (Player P, Offset32 offset32) const |
template<Player P> | |
Direction | getLongDirection (Square from, Square to) const |
int | spaceCounts (Square from, Square to) const |
fromとtoが長い利きを持つ位置にある時,間のマスの数を求める 一致している時は0 となりも0 関係ない時は-1 | |
const Offset | getShortOffset (Offset32 offset32) const |
Longの利きの可能性のあるoffsetの場合は, 反復に使う offsetを Shortの利きのoffsetの場合はそれ自身を返す. | |
const Offset | getShortOffsetNotKnight (Offset32 offset32) const |
Longの利きの可能性のあるoffsetの場合は, 反復に使う offsetを Knight以外のShortの利きのoffsetの場合はそれ自身を返す. | |
Offset | getShort8OffsetUnsafe (Square from, Square to) const |
8方向にいない場合も適当なものを返す. | |
template<Player P> | |
Direction | getShort8Unsafe (Square from, Square to) const |
8方向にいない場合も適当なものを返す. | |
Direction | getShort8Unsafe (Player P, Square from, Square to) const |
template<Player P> | |
Direction | getShort8 (Square from, Square to) const |
template<Player P> | |
Direction | getShort8 (Square from, Square to, Offset &o) const |
bool | isBetween (Square t, Square p0, Square p1) const |
p0, p1の間にtがあるかどうか. | |
bool | isBetweenSafe (Square t, Square p0, Square p1) const |
Static Public 変数 | |
static const CArray< Offset, DIRECTION_SIZE > | offsets |
static const CArray< int, DIRECTION_SIZE > | dxs |
static const CArray< int, DIRECTION_SIZE > | dys |
Private メソッド | |
template<Direction Dir> | |
void | setDirections () |
template<Direction Dir> | |
void | setKnightDirections () |
void | init () |
Private 変数 | |
CArray< Direction, Offset32::SIZE > | directions |
CArray< signed char, Offset::ONBOARD_OFFSET_SIZE > | short8Offset |
CArray< unsigned char, Offset::ONBOARD_OFFSET_SIZE > | short8Dir |
CArray< Offset, Offset32::SIZE > | short_offsets |
CArray< Offset, Offset32::SIZE > | short_offsets_not_knight |
CArray< int, Offset32Wide::SIZE > | space_counts |
boardTable.h の 12 行で定義されています。
osl::BoardTable::BoardTable | ( | ) |
boardTable.cc の 65 行で定義されています。
参照先 osl::BLACK, getOffset(), init(), と osl::UL.
int osl::BoardTable::getDxForBlack | ( | Direction | dir | ) | const [inline] |
boardTable.h の 40 行で定義されています。
参照先 dxs.
参照元 osl::checkmate::ImmediateCheckmateTable::ImmediateCheckmateTable(), と osl::PtypeTable::init().
int osl::BoardTable::getDyForBlack | ( | Direction | dir | ) | const [inline] |
boardTable.h の 43 行で定義されています。
参照先 dys.
参照元 osl::checkmate::ImmediateCheckmateTable::ImmediateCheckmateTable(), と osl::PtypeTable::init().
P | どちらのPlayerにとっての方向かを指定 |
boardTable.h の 71 行で定義されています。
参照先 osl::Offset32Base< Width, Width2 >::blackOffset32(), directions, osl::isValid(), と osl::Offset32Base< Width, Width2 >::isValid().
参照元 osl::move_probability::BlockLong::addPiece(), osl::effect_util::AdditionalOrShadow::count(), osl::checkmate::ProofNumberTable::countLibertyLong(), osl::NumEffectState::hasEffectByWithRemove(), osl::NumEffectState::hasEffectInDirection(), osl::effect_util::Neighboring8Direct::Table::hasEffectOrAdditional(), と osl::NumEffectState::recalcPinOpen().
boardTable.h の 79 行で定義されています。
参照先 osl::BLACK.
Direction osl::BoardTable::getLongDirection | ( | Square | from, | |
Square | to | |||
) | const [inline] |
P | どちらのPlayerにとっての方向かを指定 |
boardTable.h の 88 行で定義されています。
boardTable.h の 50 行で定義されています。
参照先 osl::BLACK.
boardTable.h の 47 行で定義されています。
参照先 getOffsetForBlack(), と osl::sign().
参照元 osl::move_probability::AddEffectLong::addOne(), osl::move_probability::KingBlockade::blockAll(), BoardTable(), osl::move_classifier::PawnDropCheckmate< P >::canEscape(), osl::move_probability::StateInfo::clearOldCache(), osl::rating::PatternLong2::find(), osl::move_probability::StateInfo::findCheckmateDefender(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDir(), osl::checkmate::EdgeTable::init(), osl::effect_util::Neighboring8Direct::Table::init(), osl::checkmate::ProofNumberTable::libertyAfterAllMove(), osl::move_probability::KingBlockade::match(), osl::move_probability::CoverPawn::match(), osl::move_probability::DropAfterOpposingPawn::match(), osl::move_probability::OpposingPawn::match(), osl::move_probability::LureDefender::match(), osl::move_probability::LanceAttack::match(), osl::eval::ml::SilverFork::matchGold(), osl::eval::ml::SilverFork::matchRook(), osl::rating::PatternLong::nextPieceOrEnd(), nextSquare(), osl::Offset::Offset(), osl::checkmate::detail::slowCheckDrop(), osl::checkmate::ImmediateCheckmate::slowHasCheckmateMoveDirPiece(), と osl::move_probability::StateInfo::updatePinnedGenerals().
黒にとってのoffsetを返す
boardTable.h の 37 行で定義されています。
参照先 offsets.
参照元 osl::effect::EffectedNumTable::EffectedNumTable(), getOffset(), osl::effect_util::Neighboring8Direct::hasEffectFromTo(), osl::move_probability::BlockLong::makeLongAttackOne(), osl::mobility::MobilityTable::MobilityTable(), と osl::NumEffectState::recalcPinOpen().
boardTable.h の 147 行で定義されています。
参照先 osl::Square::isOnBoard(), osl::Square::x(), と osl::Square::y().
参照元 osl::checkmate::ProofNumberTable::countLibertyShortNotKnight(), osl::effect::NumSimpleEffectTable::doBlockAt(), osl::effect_util::AdditionalEffect::hasEffect(), osl::move_classifier::KingOpenMove< P >::isMember(), osl::checkmate::King8Info::make(), と osl::NumEffectState::pinnedDir().
8方向にいない場合も適当なものを返す.
boardTable.h の 126 行で定義されています。
参照先 osl::Offset::makeDirect(), osl::Offset::ONBOARD_OFFSET_MIN, short8Offset, と osl::Square::uintValue().
参照元 osl::checkmate::detail::blockingDiagonalAttack(), と osl::move_generator::detail::generateOpenOrCapture().
Direction osl::BoardTable::getShort8Unsafe | ( | Square | from, | |
Square | to | |||
) | const [inline] |
8方向にいない場合も適当なものを返す.
boardTable.h の 134 行で定義されています。
参照先 osl::BLACK, osl::Offset::ONBOARD_OFFSET_MIN, short8Dir, と osl::Square::uintValue().
参照元 osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiece(), osl::move_generator::PieceOnBoard< Action, noCapturePromote >::generatePiecePtype(), osl::move_generator::detail::generateRookLongMoveNotKing(), osl::checkmate::ImmediateCheckmate::hasCheckmateMoveDirPiece(), osl::move_classifier::KingOpenMove< P >::isMember(), osl::NumEffectState::pinnedCanMoveTo(), と osl::NumEffectState::wasCheckEvasion().
boardTable.h の 140 行で定義されています。
参照先 osl::BLACK.
Longの利きの可能性のあるoffsetの場合は, 反復に使う offsetを Shortの利きのoffsetの場合はそれ自身を返す.
利きの可能性のない場合は0を返す
boardTable.h の 110 行で定義されています。
参照先 osl::Offset32Base< Width, Width2 >::index(), osl::Offset32Base< Width, Width2 >::isValid(), と short_offsets.
参照元 osl::move_generator::detail::blockingU(), osl::rating::PatternBlock::find(), osl::eval::ml::BishopRookFork::findDropInLine(), osl::move_generator::Escape< Action >::generateBlocking(), osl::move_generator::Escape< Action >::generateBlockingKing(), osl::NumEffectState::hasEffectIf(), osl::effect_util::Neighboring8Direct::Table::hasEffectOrAdditional(), と osl::SimpleState::isEmptyBetween().
Longの利きの可能性のあるoffsetの場合は, 反復に使う offsetを Knight以外のShortの利きのoffsetの場合はそれ自身を返す.
Knightの利き, 利きの可能性のない場合は0を返す
boardTable.h の 119 行で定義されています。
参照先 osl::Offset32Base< Width, Width2 >::index(), osl::Offset32Base< Width, Width2 >::isValid(), と short_offsets_not_knight.
参照元 osl::checkmate::OracleAdjust::attack(), osl::move_classifier::PawnDropCheckmate< P >::canEscape(), osl::checkmate::ProofNumberTable::countLibertyLong(), osl::move_probability::CoverFork::defending(), osl::effect_util::AdditionalEffect::find(), osl::eval::See::findAdditionalPieces(), osl::checkmate::ImmediateCheckmateTable::ImmediateCheckmateTable(), isBetweenSafe(), osl::move_classifier::KingOpenMove< P >::isMemberMain(), osl::Square::isNeighboring8(), osl::move_probability::BlockLong::makeLongAttackOne(), と osl::move_probability::PromotionBySacrifice::match().
void osl::BoardTable::init | ( | ) | [private] |
boardTable.cc の 45 行で定義されています。
参照先 osl::DIRECTION_INVALID_VALUE, directions, osl::CArray< T, Capacity >::fill(), short8Dir, short8Offset, short_offsets_not_knight, と space_counts.
参照元 BoardTable().
p0, p1の間にtがあるかどうか.
(t,p0), (t,p1)のどちらかが8方向である時にのみ呼び出すこと 他方も8方向でないとしたらknightの関係
boardTable.h の 172 行で定義されています。
参照先 osl::DIRECTION_INVALID_VALUE, osl::Offset::ONBOARD_OFFSET_MIN, short8Dir, と osl::Square::uintValue().
参照元 osl::move_probability::CoverFork::defending(), isBetweenSafe(), osl::move_probability::BlockLong::makeLongAttackOne(), osl::checkmate::detail::slowCheckDrop(), と osl::checkmate::ImmediateCheckmate::slowHasCheckmateMoveDirPiece().
boardTable.h の 179 行で定義されています。
参照先 getShortOffsetNotKnight(), と isBetween().
next position from pos for player P.
答えが isOnBoard とは限らない
boardTable.h の 61 行で定義されています。
参照先 getOffset(), と osl::Square::isOnBoard().
参照元 osl::Square::back(), osl::eval::ml::PawnAdvanceUtil::cantAdvance(), osl::rating::Threatmate::captureForKnightCheck(), osl::eval::ml::NumPiecesBetweenBishopAndKing::countBetween(), osl::checkmate::CheckmateIfCapture::effectiveAttackCandidate0(), osl::eval::ml::King8EffectAll::effectState(), osl::eval::ml::King8Effect::effectState(), osl::eval::ml::KnightHead::eval(), osl::eval::ml::PawnPtypeOPtypeO::eval(), osl::rating::BadLanceGroup::findMatch(), osl::rating::BadLance::match(), osl::Square::neighbor(), osl::rating::Pattern::nextSquare(), osl::eval::ml::King8EffectBase::MakeEffectStateDefense::operator()(), と osl::eval::ml::King8EffectBase::MakeEffectStateSimple::operator()().
void osl::BoardTable::setDirections | ( | ) | [private] |
void osl::BoardTable::setKnightDirections | ( | ) | [private] |
boardTable.cc の 36 行で定義されています。
参照先 osl::Offset32Base< Width, Width2 >::index(), と short_offsets.
fromとtoが長い利きを持つ位置にある時,間のマスの数を求める 一致している時は0 となりも0 関係ない時は-1
boardTable.h の 99 行で定義されています。
参照先 osl::Offset32Base< Width, Width2 >::index(), と space_counts.
CArray<Direction,Offset32::SIZE> osl::BoardTable::directions [private] |
boardTable.h の 14 行で定義されています。
参照元 getLongDirection(), init(), と setDirections().
const CArray< int, DIRECTION_SIZE > osl::BoardTable::dxs [static] |
{ { DirectionTraits<static_cast<Direction>(0)>::blackDx, DirectionTraits<static_cast<Direction>(1)>::blackDx, DirectionTraits<static_cast<Direction>(2)>::blackDx, DirectionTraits<static_cast<Direction>(3)>::blackDx, DirectionTraits<static_cast<Direction>(4)>::blackDx, DirectionTraits<static_cast<Direction>(5)>::blackDx, DirectionTraits<static_cast<Direction>(6)>::blackDx, DirectionTraits<static_cast<Direction>(7)>::blackDx, DirectionTraits<static_cast<Direction>(8)>::blackDx, DirectionTraits<static_cast<Direction>(9)>::blackDx, DirectionTraits<static_cast<Direction>(10)>::blackDx, DirectionTraits<static_cast<Direction>(11)>::blackDx, DirectionTraits<static_cast<Direction>(12)>::blackDx, DirectionTraits<static_cast<Direction>(13)>::blackDx, DirectionTraits<static_cast<Direction>(14)>::blackDx, DirectionTraits<static_cast<Direction>(15)>::blackDx, DirectionTraits<static_cast<Direction>(16)>::blackDx, DirectionTraits<static_cast<Direction>(17)>::blackDx } }
boardTable.h の 25 行で定義されています。
参照元 getDxForBlack().
const CArray< int, DIRECTION_SIZE > osl::BoardTable::dys [static] |
{ { DirectionTraits<static_cast<Direction>(0)>::blackDy, DirectionTraits<static_cast<Direction>(1)>::blackDy, DirectionTraits<static_cast<Direction>(2)>::blackDy, DirectionTraits<static_cast<Direction>(3)>::blackDy, DirectionTraits<static_cast<Direction>(4)>::blackDy, DirectionTraits<static_cast<Direction>(5)>::blackDy, DirectionTraits<static_cast<Direction>(6)>::blackDy, DirectionTraits<static_cast<Direction>(7)>::blackDy, DirectionTraits<static_cast<Direction>(8)>::blackDy, DirectionTraits<static_cast<Direction>(9)>::blackDy, DirectionTraits<static_cast<Direction>(10)>::blackDy, DirectionTraits<static_cast<Direction>(11)>::blackDy, DirectionTraits<static_cast<Direction>(12)>::blackDy, DirectionTraits<static_cast<Direction>(13)>::blackDy, DirectionTraits<static_cast<Direction>(14)>::blackDy, DirectionTraits<static_cast<Direction>(15)>::blackDy, DirectionTraits<static_cast<Direction>(16)>::blackDy, DirectionTraits<static_cast<Direction>(17)>::blackDy } }
boardTable.h の 26 行で定義されています。
参照元 getDyForBlack().
const CArray< Offset, DIRECTION_SIZE > osl::BoardTable::offsets [static] |
{ { DirectionTraits<static_cast<Direction>(0)>::blackOffset(), DirectionTraits<static_cast<Direction>(1)>::blackOffset(), DirectionTraits<static_cast<Direction>(2)>::blackOffset(), DirectionTraits<static_cast<Direction>(3)>::blackOffset(), DirectionTraits<static_cast<Direction>(4)>::blackOffset(), DirectionTraits<static_cast<Direction>(5)>::blackOffset(), DirectionTraits<static_cast<Direction>(6)>::blackOffset(), DirectionTraits<static_cast<Direction>(7)>::blackOffset(), DirectionTraits<static_cast<Direction>(8)>::blackOffset(), DirectionTraits<static_cast<Direction>(9)>::blackOffset(), DirectionTraits<static_cast<Direction>(10)>::blackOffset(), DirectionTraits<static_cast<Direction>(11)>::blackOffset(), DirectionTraits<static_cast<Direction>(12)>::blackOffset(), DirectionTraits<static_cast<Direction>(13)>::blackOffset(), DirectionTraits<static_cast<Direction>(14)>::blackOffset(), DirectionTraits<static_cast<Direction>(15)>::blackOffset(), DirectionTraits<static_cast<Direction>(16)>::blackOffset(), DirectionTraits<static_cast<Direction>(17)>::blackOffset() } }
boardTable.h の 24 行で定義されています。
参照元 getOffsetForBlack().
CArray<unsigned char,Offset::ONBOARD_OFFSET_SIZE> osl::BoardTable::short8Dir [private] |
boardTable.h の 17 行で定義されています。
参照元 getShort8(), getShort8Unsafe(), init(), isBetween(), と setDirections().
CArray<signed char,Offset::ONBOARD_OFFSET_SIZE> osl::BoardTable::short8Offset [private] |
boardTable.h の 16 行で定義されています。
参照元 getShort8(), getShort8OffsetUnsafe(), init(), と setDirections().
CArray<Offset, Offset32::SIZE> osl::BoardTable::short_offsets [private] |
boardTable.h の 18 行で定義されています。
参照元 getShortOffset(), setDirections(), と setKnightDirections().
boardTable.h の 19 行で定義されています。
CArray<int,Offset32Wide::SIZE> osl::BoardTable::space_counts [private] |
boardTable.h の 21 行で定義されています。
参照元 init(), setDirections(), と spaceCounts().