利きを局面に持たせるためのコード. [詳細]
構成 | |
class | BoardBitEffect |
91マスの盤上の駒の有無を91ビットで表現するState. [詳細] | |
struct | ApplyDoUndoSimpleMove< P, BoardBitEffect< BaseState > > |
struct | ApplyDoUndoDropMove< P, BoardBitEffect< BaseState > > |
struct | ApplyDoUndoCaptureMove< P, BoardBitEffect< BaseState > > |
struct | BoardBitMask |
SSE2も可なのだが,あまり良い方法が見つからない. [詳細] | |
class | BoardBitMaskTable |
union | Byte8 |
class | EffectedNum |
盤面上の駒が「黒から見た」方向に長い利きをつけられている時に, 利きをつけている駒の番号を得る たとえば,Uの時は下から上方向の長い利きがついているものとする. その方向の利きがついていない場合はEMPTY_NUM(0x80)を入れておく. [詳細] | |
class | EffectedNumTable |
class | AddMaskAction |
Liberty8で使われるHelper. [詳細] | |
class | Liberty8 |
自分の駒があるマスの8近傍の敵の利きの状態を得る. [詳細] | |
struct | LongEffect8 |
8近傍のどこに長い利きを持つか. [詳細] | |
class | Liberty8Table |
Liberty8を得るために使うテーブル. [詳細] | |
struct | SignatureTraits |
class | MoveSignatureTable |
PtypeOからMoveSignatureを求めるテーブル. [詳細] | |
class | NumBitmapEffect |
現在の定義 (2005/3/4以降)
| |
class | NumSimpleEffectTable |
局面全体の利きデータ. [詳細] | |
class | SignatureTable |
class | SignatureEffect |
マスごとの利き(MoveSignature)も保持するState. [詳細] | |
struct | ApplyDoUndoSimpleMove< P, SignatureEffect< BaseState > > |
struct | ApplyDoUndoDropMove< P, SignatureEffect< BaseState > > |
struct | ApplyDoUndoCaptureMove< P, SignatureEffect< BaseState > > |
型定義 | |
typedef unsigned char | MoveSignature |
マスの利きを表す型(SignatureEffectで使う予定). | |
関数 | |
BoardBitMask & | operator^= (BoardBitMask &lhs, BoardBitMask const &rhs) |
BoardBitMask | operator^ (BoardBitMask const &lhs, BoardBitMask const &rhs) |
std::ostream & | operator<< (std::ostream &os, BoardBitMask const &boardBitMask) |
bool | operator== (const EffectedNumTable &, const EffectedNumTable &) |
std::ostream & | operator<< (std::ostream &, const EffectedNumTable &) |
template<Player P> | |
std::ostream & | operator<< (std::ostream &os, Liberty8< P > const &liberty) |
template<Player P> | |
MoveSignature | getPlayerMask () |
template<> | |
MoveSignature | getPlayerMask< BLACK > () |
template<> | |
MoveSignature | getPlayerMask< WHITE > () |
std::ostream & | operator<< (std::ostream &os, const MoveSignature signature) |
bool | operator== (const NumSimpleEffectTable &, const NumSimpleEffectTable &) |
std::ostream & | operator<< (std::ostream &, const NumSimpleEffectTable &) |
bool | operator!= (const NumSimpleEffectTable &et1, const NumSimpleEffectTable &et2) |
static void | setBetweenMask (BoardBitMask &mask, Position from, Position to, Ptype ptype) |
template std::ostream & | operator<< (std::ostream &os, Liberty8< BLACK > const &liberty) |
template std::ostream & | operator<< (std::ostream &os, Liberty8< WHITE > const &liberty) |
static bool | hasShortMove (Ptype ptype, int dx, int dy, int dx0, int dy0) |
黒の攻め方の駒ptype から dx, dyの位置にdirectMoveがあるか? | |
static bool | hasLongMove (Ptype ptype, int dx, int dy, int dx0, int dy0) |
黒の攻め方の駒ptype から dx, dyの位置にInDirectMoveがあるか? ただし,隣で伸ばした先が8近傍内に無い場合は shortMoveにする また,目的のちょうど対称の時もshortMoveにする | |
static unsigned char | shortMaskOf (Ptype ptype, int dx, int dy) |
黒の攻め方の駒ptype から dx, dyの位置にいる白玉の 近隣 Dir(白玉に白の目から見てDirの動き到達可能なマス) に 利きを持つ場合は dirToMask(Dir)が0, そうでない場合は1 | |
static unsigned int | directionOf (int dx, int dy) |
-dx, -dyの動きが黒に取って, dir であるときに 1<<dirを返す dx, dyは 8近傍の動きのみ許す | |
std::ostream & | operator<< (std::ostream &os, LongEffect8 const &longEffect) |
変数 | |
const Liberty8Table | Liberty8_Table |
const int | MS_PLAYER = (1<<7) |
const int | MS_LONG_U = (1<<5) |
const int | MS_U = (1<<4) |
const int | MS_UL_UR = (1<<3) |
const int | MS_L_R_D = (1<<2) |
const int | MS_DL_DR = (1<<1) |
const int | MS_UUL_UUR = (1<<0) |
const MoveSignature | signature_EMPTY = getPlayerMask<BLACK>() |
const MoveSignature | signature_EDGE = getPlayerMask<WHITE>() |
const MoveSignatureTable | Move_Signature_Table |
利きを局面に持たせるためのコード.
typedef unsigned char osl::effect::MoveSignature |
static unsigned int osl::effect::directionOf | ( | int | dx, | |
int | dy | |||
) | [static] |
-dx, -dyの動きが黒に取って, dir であるときに 1<<dirを返す dx, dyは 8近傍の動きのみ許す
liberty8Table.cc の 81 行で定義されています。
参照先 osl::BLACK, osl::Board_Table, osl::BoardTable::getLongDirection(), osl::isLong(), と osl::longToShort().
MoveSignature osl::effect::getPlayerMask | ( | ) | [inline] |
MoveSignature osl::effect::getPlayerMask< BLACK > | ( | ) | [inline] |
MoveSignature osl::effect::getPlayerMask< WHITE > | ( | ) | [inline] |
static bool osl::effect::hasLongMove | ( | Ptype | ptype, | |
int | dx, | |||
int | dy, | |||
int | dx0, | |||
int | dy0 | |||
) | [static] |
黒の攻め方の駒ptype から dx, dyの位置にInDirectMoveがあるか? ただし,隣で伸ばした先が8近傍内に無い場合は shortMoveにする また,目的のちょうど対称の時もshortMoveにする
liberty8Table.cc の 48 行で定義されています。
参照先 osl::BLACK, osl::PtypeTable::getEffect(), osl::EffectContent::hasEffect(), hasShortMove(), osl::newPtypeO(), と osl::Ptype_Table.
static bool osl::effect::hasShortMove | ( | Ptype | ptype, | |
int | dx, | |||
int | dy, | |||
int | dx0, | |||
int | dy0 | |||
) | [static] |
黒の攻め方の駒ptype から dx, dyの位置にdirectMoveがあるか?
liberty8Table.cc の 15 行で定義されています。
参照先 osl::BLACK, osl::Board_Table, osl::Offset::dx(), osl::Offset::dy(), osl::PtypeTable::getEffect(), osl::BoardTable::getShortOffset(), osl::EffectContent::hasBlockableEffect(), osl::EffectContent::hasUnblockableEffect(), osl::newPtypeO(), osl::Ptype_Table, と osl::Offset::zero().
参照元 hasLongMove(), と shortMaskOf().
bool osl::effect::operator!= | ( | const NumSimpleEffectTable & | et1, | |
const NumSimpleEffectTable & | et2 | |||
) | [inline] |
numSimpleEffect.h の 273 行で定義されています。
std::ostream& osl::effect::operator<< | ( | std::ostream & | os, | |
LongEffect8 const & | longEffect | |||
) |
liberty8Table.cc の 172 行で定義されています。
参照先 osl::effect::LongEffect8::getMask(), と osl::effect::LongEffect8::getOffset().
template std::ostream& osl::effect::operator<< | ( | std::ostream & | os, | |
Liberty8< WHITE > const & | liberty | |||
) |
template std::ostream& osl::effect::operator<< | ( | std::ostream & | os, | |
Liberty8< BLACK > const & | liberty | |||
) |
std::ostream & osl::effect::operator<< | ( | std::ostream & | os, | |
const NumSimpleEffectTable & | effectTable | |||
) |
numSimpleEffect.cc の 37 行で定義されています。
std::ostream & osl::effect::operator<< | ( | std::ostream & | os, | |
const MoveSignature | signature | |||
) |
moveSignature.cc の 9 行で定義されています。
std::ostream & osl::effect::operator<< | ( | std::ostream & | os, | |
Liberty8< P > const & | liberty | |||
) | [inline] |
liberty8.cc の 12 行で定義されています。
std::ostream& osl::effect::operator<< | ( | std::ostream & | , | |
const EffectedNumTable & | ||||
) |
std::ostream & osl::effect::operator<< | ( | std::ostream & | os, | |
BoardBitMask const & | boardBitMask | |||
) |
boardBitMask.cc の 11 行で定義されています。
bool osl::effect::operator== | ( | const NumSimpleEffectTable & | et1, | |
const NumSimpleEffectTable & | et2 | |||
) |
bool osl::effect::operator== | ( | const EffectedNumTable & | e1, | |
const EffectedNumTable & | e2 | |||
) |
effectedNumTable.cc の 46 行で定義されています。
BoardBitMask osl::effect::operator^ | ( | BoardBitMask const & | lhs, | |
BoardBitMask const & | rhs | |||
) | [inline] |
boardBitMask.h の 123 行で定義されています。
BoardBitMask& osl::effect::operator^= | ( | BoardBitMask & | lhs, | |
BoardBitMask const & | rhs | |||
) | [inline] |
boardBitMask.h の 113 行で定義されています。
static void osl::effect::setBetweenMask | ( | BoardBitMask & | mask, | |
Position | from, | |||
Position | to, | |||
Ptype | ptype | |||
) | [static] |
static unsigned char osl::effect::shortMaskOf | ( | Ptype | ptype, | |
int | dx, | |||
int | dy | |||
) | [static] |
黒の攻め方の駒ptype から dx, dyの位置にいる白玉の 近隣 Dir(白玉に白の目から見てDirの動き到達可能なマス) に 利きを持つ場合は dirToMask(Dir)が0, そうでない場合は1
自分が動いて元のマスに利きをつける手は生成しない
liberty8Table.cc の 60 行で定義されています。
参照先 osl::Board_Table, osl::BoardTable::getDxForBlack(), osl::BoardTable::getDyForBlack(), と hasShortMove().
参照元 osl::effect::ApplyDoUndoCaptureMove< P, SignatureEffect< BaseState > >::doUndoCaptureMove(), osl::effect::ApplyDoUndoDropMove< P, SignatureEffect< BaseState > >::doUndoDropMove(), osl::effect::ApplyDoUndoSimpleMove< P, SignatureEffect< BaseState > >::doUndoSimpleMove(), と osl::effect::SignatureTable::SignatureTable().
const int osl::effect::MS_DL_DR = (1<<1) |
moveSignature.h の 23 行で定義されています。
const int osl::effect::MS_L_R_D = (1<<2) |
moveSignature.h の 22 行で定義されています。
const int osl::effect::MS_LONG_U = (1<<5) |
moveSignature.h の 19 行で定義されています。
const int osl::effect::MS_PLAYER = (1<<7) |
moveSignature.h の 18 行で定義されています。
const int osl::effect::MS_U = (1<<4) |
moveSignature.h の 20 行で定義されています。
const int osl::effect::MS_UL_UR = (1<<3) |
moveSignature.h の 21 行で定義されています。
const int osl::effect::MS_UUL_UUR = (1<<0) |
moveSignature.h の 24 行で定義されています。
const MoveSignature osl::effect::signature_EDGE = getPlayerMask<WHITE>() |
const MoveSignature osl::effect::signature_EMPTY = getPlayerMask<BLACK>() |
moveSignature.h の 48 行で定義されています。
参照元 osl::effect::ApplyDoUndoCaptureMove< P, SignatureEffect< BaseState > >::doUndoCaptureMove(), osl::effect::ApplyDoUndoDropMove< P, SignatureEffect< BaseState > >::doUndoDropMove(), osl::effect::ApplyDoUndoSimpleMove< P, SignatureEffect< BaseState > >::doUndoSimpleMove(), と osl::effect::MoveSignatureTable::MoveSignatureTable().