Liberty8を得るために使うテーブル. More...
#include <liberty8Table.h>
Public Member Functions | |
Liberty8Table () | |
template<Player P> | |
NearMask | getShortMask (Ptype ptype, Square from, Square to) const |
P側のptypeのfromにある駒がtoにある Pの反対側の駒の周囲 にどういう短い利き(長い利きの隣で利きを伸ばすと8近傍内に 伸ばせる場合を除く)を持つかを返す directでなくても,targetの駒を挟んだ反対側ならOKとする 利きがあるところは0でそうでないところは1とする More... | |
template<Player P> | |
LongEffect8 | getLongEffect (Ptype ptype, Square from, Square to) const |
P側のptypeのfromにある駒がtoにある Pの反対側の駒の周囲 にどういう長い利き(長い利きの隣で利きを伸ばすと8近傍内に 伸ばせる場合を含む)を持つかを返す More... | |
template<Player P> | |
LongEffect8 | getLongEffect2 (Square from, Square to) const |
飛車, 龍が王の斜めの位置にいて, 両方向に長い利きを持つ場合の テーブル More... | |
Private Member Functions | |
LongEffect8 | longEffectOf (Ptype ptype, int dx, int dy) |
黒の攻め方の駒ptype から dx, dyの位置にいる白玉の 近隣 Dir(白玉に白の目から見てDirの動き到達可能なマス) に 利きを持つ場合は dirToMask(Dir)が0, そうでない場合は1 More... | |
Private Attributes | |
CArray< CArray< unsigned char, Offset32::SIZE >, PTYPE_SIZE > | shortMask |
CArray2d< LongEffect8, PTYPE_SIZE, Offset32::SIZE > | longEffect |
CArray< LongEffect8, Offset32::SIZE > | longEffect2 |
Liberty8を得るために使うテーブル.
短い利きに関しては,ptypeと座標の差でテーブルを引けば得られる. 長い利きはgetLongEffectで得るが, 飛車に関してはそれに加えてgetLongEffect2も使う.
Definition at line 51 of file liberty8Table.h.
osl::effect::Liberty8Table::Liberty8Table | ( | ) |
まずはクリア()
Definition at line 141 of file liberty8Table.cc.
References osl::BLACK, osl::EffectContent::DIRECT(), osl::PtypeTable::getEffect(), osl::EffectContent::hasEffect(), osl::PtypeTable::hasLongMove(), osl::Offset32Base< Width, Width2 >::index(), longEffect, longEffectOf(), osl::newPtypeO(), osl::PPAWN, osl::PTYPE_MAX, osl::PTYPE_PIECE_MIN, osl::Ptype_Table, osl::ROOK, shortMask, and osl::effect::shortMaskOf().
|
inline |
P側のptypeのfromにある駒がtoにある Pの反対側の駒の周囲 にどういう長い利き(長い利きの隣で利きを伸ばすと8近傍内に 伸ばせる場合を含む)を持つかを返す
Definition at line 77 of file liberty8Table.h.
References osl::PtypeTable::hasLongMove(), osl::Square::isOnBoard(), osl::isValid(), longEffect, and osl::Ptype_Table.
|
inline |
飛車, 龍が王の斜めの位置にいて, 両方向に長い利きを持つ場合の テーブル
Definition at line 88 of file liberty8Table.h.
References osl::Square::isOnBoard(), and longEffect2.
|
inline |
P側のptypeのfromにある駒がtoにある Pの反対側の駒の周囲 にどういう短い利き(長い利きの隣で利きを伸ばすと8近傍内に 伸ばせる場合を除く)を持つかを返す directでなくても,targetの駒を挟んだ反対側ならOKとする 利きがあるところは0でそうでないところは1とする
Definition at line 66 of file liberty8Table.h.
References osl::Square::isOnBoard(), osl::isValid(), and shortMask.
|
private |
黒の攻め方の駒ptype から dx, dyの位置にいる白玉の 近隣 Dir(白玉に白の目から見てDirの動き到達可能なマス) に 利きを持つ場合は dirToMask(Dir)が0, そうでない場合は1
自分が動いて元のマスに利きをつける手は生成しない
Definition at line 91 of file liberty8Table.cc.
References osl::Board_Table, osl::effect::directionOf(), osl::BoardTable::getDxForBlack(), osl::BoardTable::getDyForBlack(), osl::effect::hasLongMove(), osl::PtypeTable::hasLongMove(), osl::Offset32Base< Width, Width2 >::index(), longEffect2, osl::PROOK, osl::Ptype_Table, osl::ROOK, osl::effect::LongEffect8::setMask(), osl::effect::LongEffect8::setOffset(), and osl::Offset::ZERO().
Referenced by Liberty8Table().
|
private |
Definition at line 53 of file liberty8Table.h.
Referenced by getLongEffect(), and Liberty8Table().
|
private |
Definition at line 54 of file liberty8Table.h.
Referenced by getLongEffect2(), and longEffectOf().
|
private |
Definition at line 52 of file liberty8Table.h.
Referenced by getShortMask(), and Liberty8Table().