利きを局面に持たせるためのコード. [詳細]
構成 | |
| 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().
1.6.3