Go to the documentation of this file.
18 if (property == 0 || property == 1) {
21 return property == openLong(state, move);
31 std::ostringstream os;
32 os <<
"B" <<
self << opponent;
38 std::ostringstream os;
39 os <<
"Open" <<
property / 4 <<
property % 4;
72 if (move.
ptype() !=
self)
77 if (last_move.
ptype() != attack)
79 const Square last_to = last_move.
to();
80 if (last_to==move.
to())
83 Test action(&result, state, move);
94 const Square last_to = last_move.
to();
95 if (last_to==move.
to())
102 Test action(&result, state, move);
118 #if OSL_WORDSIZE == 32
142 +(opponent_type == CAPTURE ?
"c" : (opponent_type == DROP ?
"d" :
"e"));
const mask_t getMask(int num) const
const Piece pieceAt(Square sq) const
const PieceMask & piecesOnBoard(Player p) const
constexpr Player alt(Player player)
bool isDirectCheck(Move move) const
void forEachEffectOfPiece(Square pieceSquare, Action &action) const
pieceSquareにある駒によって利きを受けるすべてのsquare (空白含む)について actionを実行する
bool hasLongMove(Ptype ptype) const
遅くて良い?
const Move lastMove(size_t last=1) const
const std::string & name() const
const PieceMask effectedMask(Player pl) const
pl からの利きが(1つ以上)ある駒一覧
GeneralMask< mask_int_t > mask_t
bool hasEffectIf(PtypeO ptypeo, Square attacker, Square target) const
attackerにptypeoの駒がいると仮定した場合にtargetに利きがあるかどうか を stateをupdateしないで確かめる.
const PtypeTable Ptype_Table
const Piece pieceOf(int num) const
const Piece pieceOnBoard(Square sq) const
bool isOpenCheck(Move move) const
PtypeO ptypeO() const
移動後のPtype, i.e., 成る手だった場合成った後
bool hasEffectByPiece(Piece attack, Square target) const
駒attack が target に利きを持つか (旧hasEffectToと統合)
bool isOnBoardByOwner() const
piece がプレイヤーPの持ち物でかつボード上にある駒の場合は true.
bool isNormal() const
INVALID でも PASS でもない.
const Square square() const
static const CArray< const char *, 4 > check_property
const char * getCsaName(Ptype ptype) const
bool match(const NumEffectState &state, Move move, const RatingEnv &) const