局面全体の利きデータ. [詳細]
#include <numSimpleEffect.h>
Public メソッド | |
template<Player P, Ptype T, Direction Dir, NumBitmapEffect::Op OP, bool UC> | |
void | doEffectShort (const SimpleState &state, Square pos, int num) |
ある位置からある方向に短い利きがある時に,その方向の利きを更新する. | |
template<Player P, Ptype T, Direction Dir, NumBitmapEffect::Op OP, bool UC> | |
void | doEffectLong (const SimpleState &state, Square pos, int num) |
ある位置からある方向に長い利きがある時に,その方向の利きを更新する. | |
template<Player P, Ptype T, NumBitmapEffect::Op OP, bool UC> | |
void | doEffectBy (const SimpleState &state, Square pos, int num) |
ある種類の駒が持つ利きを更新する. | |
template<NumBitmapEffect::Op OP, bool UC> | |
void | doEffect (const SimpleState &state, PtypeO ptypeo, Square pos, int num) |
ある種類の駒が持つ利きを更新する. | |
template<NumBitmapEffect::Op OP, bool UC> | |
void | doEffect (const SimpleState &state, Piece p) |
ある駒が持つ利きを更新する. | |
void | init (const SimpleState &state) |
盤面のデータを元に初期化する. | |
NumSimpleEffectTable (const SimpleState &state) | |
コンストラクタ. | |
const NumBitmapEffect | effectSetAt (Square pos) const |
ある位置の利きデータを取り出す. | |
template<NumBitmapEffect::Op OP, bool UC> | |
void | doBlockAt (const SimpleState &state, Square pos, int piece_num) |
posに駒を設置/削除して長い利きをブロック/延長する際の利きデータの更新. | |
const BoardMask | changedEffects (Player pl) const |
const NumBitmapEffect | changedPieces () const |
const PieceMask | effectedMask (Player pl) const |
const PieceMask | effectedChanged (Player pl) const |
void | setChangedPieces (NumBitmapEffect const &effect) |
void | clearChangedEffects () |
void | invalidateChangedEffects () |
void | clearEffectedChanged () |
void | copyFrom (const NumSimpleEffectTable &src) |
主要部分を高速にコピーする. | |
Public 変数 | |
CArray< PieceMask, 2 > | effected_mask |
CArray< PieceMask, 2 > | effected_changed_mask |
mobility::MobilityTable | mobilityTable |
mobility | |
EffectedNumTable | effectedNumTable |
effected num | |
Protected 変数 | |
CArray< NumBitmapEffect, Square::SIZE > | effects |
CArray< BoardMask, 2 > | changed_effects |
NumBitmapEffect | changed_effect_pieces |
set of pieces whose effect changed by previous move | |
フレンド | |
bool | operator== (const NumSimpleEffectTable &et1, const NumSimpleEffectTable &et2) |
局面全体の利きデータ.
numSimpleEffect.h の 26 行で定義されています。
osl::effect::NumSimpleEffectTable::NumSimpleEffectTable | ( | const SimpleState & | state | ) | [inline] |
const BoardMask osl::effect::NumSimpleEffectTable::changedEffects | ( | Player | pl | ) | const [inline] |
numSimpleEffect.h の 235 行で定義されています。
参照先 changed_effects.
参照元 osl::NumEffectState::changedEffects(), と osl::NumEffectState::hasChangedEffects().
const NumBitmapEffect osl::effect::NumSimpleEffectTable::changedPieces | ( | ) | const [inline] |
numSimpleEffect.h の 238 行で定義されています。
void osl::effect::NumSimpleEffectTable::clearChangedEffects | ( | ) | [inline] |
void osl::effect::NumSimpleEffectTable::clearEffectedChanged | ( | ) | [inline] |
void osl::effect::NumSimpleEffectTable::copyFrom | ( | const NumSimpleEffectTable & | src | ) |
主要部分を高速にコピーする.
盤の外や直前の利きの変化などの情報はコピーされない
numSimpleEffect.cc の 23 行で定義されています。
参照先 changed_effect_pieces, changed_effects, effected_changed_mask, effected_mask, effectedNumTable, effects, と mobilityTable.
void osl::effect::NumSimpleEffectTable::doBlockAt | ( | const SimpleState & | state, | |
Square | pos, | |||
int | piece_num | |||
) |
posに駒を設置/削除して長い利きをブロック/延長する際の利きデータの更新.
OP(template) | - 利きを足すか,減らすか | |
state | - 局面の状態 posに駒を置く前でも後でもよい | |
pos | - 変化する位置 |
xorなのでposに元々駒があって,取り除く時にも呼び出せる.
state | - 局面の状態 posに駒を置く前でも後でもよい | |
pos | - 変化する位置 |
numSimpleEffect.h の 286 行で定義されています。
参照先 osl::BLACK, osl::Board_Table, changed_effects, effected_changed_mask, effected_mask, effectedNumTable, effects, osl::EMPTY_NUM, osl::mobility::MobilityTable::get(), osl::BoardTable::getShort8(), osl::Square::index(), osl::Piece::isEdgeNum(), osl::Piece::isEmptyNum(), osl::effect::NumBitmapEffect::longEffectMask(), osl::effect::NumBitmapEffect::makeLongEffect(), mobilityTable, osl::Piece::number(), osl::Piece::owner(), osl::SimpleState::pieceAt(), osl::SimpleState::pieceOf(), osl::effect::NumBitmapEffect::playerEffectMask(), osl::Piece::ptype(), osl::mobility::MobilityTable::set(), setChangedPieces(), osl::Piece::square(), と osl::effect::NumBitmapEffect::Sub.
void osl::effect::NumSimpleEffectTable::doEffect | ( | const SimpleState & | state, | |
PtypeO | ptypeo, | |||
Square | pos, | |||
int | num | |||
) |
ある種類の駒が持つ利きを更新する.
OP(template) | - 利きを足すか,減らすか | |
state | - 盤面(動かした後) | |
ptypeo | - 駒の種類 | |
pos | - 駒の位置 | |
num | - 駒番号 |
numSimpleEffect.tcc の 12 行で定義されています。
参照先 osl::BISHOP, osl::BLACK, osl::GOLD, osl::KING, osl::KNIGHT, osl::LANCE, NEW_PTYPEO, osl::PAWN, osl::PBISHOP, osl::PKNIGHT, osl::PLANCE, osl::PPAWN, osl::PROOK, osl::PSILVER, osl::ROOK, osl::SILVER, と osl::WHITE.
void osl::effect::NumSimpleEffectTable::doEffect | ( | const SimpleState & | state, | |
Piece | p | |||
) | [inline] |
ある駒が持つ利きを更新する.
OP(template) | - 利きを足すか,減らすか | |
state | - 盤面(動かした後) | |
p | - 駒 |
numSimpleEffect.h の 198 行で定義されています。
参照先 osl::Piece::number(), osl::Piece::ptypeO(), と osl::Piece::square().
void osl::effect::NumSimpleEffectTable::doEffectBy | ( | const SimpleState & | state, | |
Square | pos, | |||
int | num | |||
) |
ある種類の駒が持つ利きを更新する.
P(template) | - ある位置にある駒の所有者 | |
T(template) | - ある位置にある駒の種類 | |
OP(template) | - 利きを足すか,減らすか | |
state | - 盤面(動かした後) | |
pos | - 駒の位置 | |
num | - 駒番号 |
numSimpleEffect.tcc の 50 行で定義されています。
参照先 osl::BISHOP, osl::LANCE, osl::PBISHOP, osl::PROOK, osl::ROOK, と setChangedPieces().
void osl::effect::NumSimpleEffectTable::doEffectLong | ( | const SimpleState & | state, | |
Square | pos, | |||
int | num | |||
) | [inline] |
ある位置からある方向に長い利きがある時に,その方向の利きを更新する.
P(template) | - ある位置にある駒の所有者 | |
T(template) | - ある位置にある駒の種類 | |
Dir(template) | - 黒の立場から見た方向 | |
OP(template) | - 利きを足すか,減らすか | |
state | - 盤面(動かした後) | |
pos | - 駒の位置 | |
num | - 駒番号 |
numSimpleEffect.h の 89 行で定義されています。
参照先 changed_effects, osl::D, osl::DL, effected_changed_mask, effected_mask, effectedNumTable, effects, osl::EMPTY_NUM, osl::mobility::MobilityTable::get(), osl::Square::index(), osl::Piece::isEdgeNum(), osl::Piece::isEmptyNum(), osl::L, osl::longToShort(), mobilityTable, osl::Piece::number(), osl::DirectionPlayerTraits< Dir, BLACK >::offset(), osl::SimpleState::pieceAt(), osl::effect::NumBitmapEffect::playerEffectMask(), osl::mobility::MobilityTable::set(), osl::Square::STAND(), osl::effect::NumBitmapEffect::Sub, osl::U, osl::UL, osl::Square::x(), osl::Square::y(), と osl::Offset::zero().
void osl::effect::NumSimpleEffectTable::doEffectShort | ( | const SimpleState & | state, | |
Square | pos, | |||
int | num | |||
) | [inline] |
ある位置からある方向に短い利きがある時に,その方向の利きを更新する.
P(template) | - ある位置にある駒の所有者 | |
T(template) | - ある位置にある駒の種類 | |
D(template) | - 駒の所有者の立場から見た方向 | |
OP(template) | - 利きを足すか,減らすか | |
pos | - 駒の位置 | |
num | - 駒番号 |
numSimpleEffect.h の 54 行で定義されています。
参照先 osl::effect::NumBitmapEffect::Add, changed_effects, effected_changed_mask, effected_mask, effects, osl::Square::index(), osl::Piece::isPieceNum(), osl::Piece::number(), osl::SimpleState::pieceAt(), と osl::effect::NumBitmapEffect::playerEffectMask().
numSimpleEffect.h の 244 行で定義されています。
numSimpleEffect.h の 241 行で定義されています。
参照先 effected_mask, と osl::playerToIndex().
const NumBitmapEffect osl::effect::NumSimpleEffectTable::effectSetAt | ( | Square | pos | ) | const [inline] |
ある位置の利きデータを取り出す.
pos | - 位置 |
numSimpleEffect.h の 219 行で定義されています。
参照先 effects, と osl::Square::index().
参照元 osl::NumEffectState::effectSetAt(), osl::NumEffectState::isConsistent(), osl::effect::operator<<(), と osl::effect::operator==().
void osl::effect::NumSimpleEffectTable::init | ( | const SimpleState & | state | ) |
盤面のデータを元に初期化する.
state | - 盤面 |
numSimpleEffect.cc の 11 行で定義されています。
参照先 osl::CArray< T, Capacity >::begin(), effects, osl::CArray< T, Capacity >::end(), osl::SimpleState::isOnBoard(), と osl::SimpleState::pieceOf().
void osl::effect::NumSimpleEffectTable::invalidateChangedEffects | ( | ) | [inline] |
void osl::effect::NumSimpleEffectTable::setChangedPieces | ( | NumBitmapEffect const & | effect | ) | [inline] |
numSimpleEffect.h の 247 行で定義されています。
参照元 doBlockAt(), doEffectBy(), と osl::NumEffectState::prologueCapture().
bool operator== | ( | const NumSimpleEffectTable & | et1, | |
const NumSimpleEffectTable & | et2 | |||
) | [friend] |
set of pieces whose effect changed by previous move
numSimpleEffect.h の 36 行で定義されています。
参照元 changedPieces(), clearChangedEffects(), copyFrom(), invalidateChangedEffects(), と setChangedPieces().
CArray<BoardMask,2> osl::effect::NumSimpleEffectTable::changed_effects [protected] |
numSimpleEffect.h の 34 行で定義されています。
参照元 changedEffects(), clearChangedEffects(), copyFrom(), doBlockAt(), doEffectLong(), doEffectShort(), と invalidateChangedEffects().
numSimpleEffect.h の 39 行で定義されています。
参照元 clearEffectedChanged(), copyFrom(), doBlockAt(), doEffectLong(), doEffectShort(), effectedChanged(), osl::NumEffectState::effectedChanged(), osl::NumEffectState::epilogueCapture(), osl::NumEffectState::epilogueDrop(), osl::NumEffectState::epilogueSimple(), osl::NumEffectState::NumEffectState(), osl::NumEffectState::prologueCapture(), osl::NumEffectState::prologueDrop(), と osl::NumEffectState::prologueSimple().
numSimpleEffect.h の 38 行で定義されています。
参照元 copyFrom(), doBlockAt(), doEffectLong(), doEffectShort(), effectedMask(), osl::NumEffectState::effectedMask(), osl::NumEffectState::epilogueCapture(), osl::NumEffectState::epilogueDrop(), osl::NumEffectState::epilogueSimple(), osl::NumEffectState::NumEffectState(), osl::effect::operator==(), osl::NumEffectState::prologueCapture(), osl::NumEffectState::prologueDrop(), と osl::NumEffectState::prologueSimple().
effected num
numSimpleEffect.h の 43 行で定義されています。
参照元 copyFrom(), doBlockAt(), doEffectLong(), osl::NumEffectState::epilogueCapture(), osl::NumEffectState::epilogueDrop(), osl::NumEffectState::epilogueSimple(), osl::NumEffectState::findLongAttackAt(), osl::NumEffectState::isConsistent(), osl::NumEffectState::longEffectNumTable(), osl::effect::operator==(), osl::NumEffectState::prologueCapture(), と osl::NumEffectState::prologueSimple().
CArray<NumBitmapEffect, Square::SIZE> osl::effect::NumSimpleEffectTable::effects [protected] |
numSimpleEffect.h の 33 行で定義されています。
参照元 copyFrom(), doBlockAt(), doEffectLong(), doEffectShort(), effectSetAt(), と init().
mobility
numSimpleEffect.h の 41 行で定義されています。
参照元 copyFrom(), doBlockAt(), doEffectLong(), osl::NumEffectState::epilogueCapture(), osl::NumEffectState::epilogueDrop(), osl::NumEffectState::epilogueSimple(), osl::NumEffectState::mobilityOf(), osl::effect::operator==(), osl::NumEffectState::prologueCapture(), osl::NumEffectState::prologueDrop(), と osl::NumEffectState::prologueSimple().