9 for (
int attack=0; attack<3; ++attack) {
10 for (
int defense=0; defense<3; ++defense) {
13 for (
int p=0; p<8; ++p)
14 push_back(
new AttackKing8(static_cast<Ptype>(s), static_cast<Ptype>(t),
true, attack, defense));
15 for (
int p=0; p<8; ++p)
16 push_back(
new AttackKing8(static_cast<Ptype>(s), static_cast<Ptype>(t),
false, attack, defense));
18 for (
int p=0; p<8; ++p)
50 const int progress8 = env.
progress.value()/2;
51 return index*8 + progress8;
55 :
Group(
"DefenseKing8")
57 for (
int danger=0; danger<=4; ++danger) {
59 for (
int p=0; p<8; ++p)
60 push_back(
new DefenseKing8(static_cast<Ptype>(s),
true, danger));
61 for (
int p=0; p<8; ++p)
62 push_back(
new DefenseKing8(static_cast<Ptype>(s),
false, danger));
78 const int progress8 = env.
progress.value()/2;
79 return index*8 + progress8;
constexpr Player alt(Player player)
static int count(const NumEffectState &state)
const Piece pieceAt(Square sq) const
mutually exclusive set of features
const Piece pieceOnBoard(Square sq) const
bool hasEffectByPiece(Piece attack, Square target) const
駒attack が target に利きを持つか (旧hasEffectToと統合)
PtypeO ptypeO() const
移動後のPtype, i.e., 成る手だった場合成った後
static bool matchMove(const NumEffectState &state, Move move)
int attack_count_for_turn
Square kingSquare() const
static int index(const NumEffectState &state, Square position, const RatingEnv &env)
const Square from() const
int findMatch(const NumEffectState &state, Move m, const RatingEnv &) const
static Square findNearest(const NumEffectState &state, PtypeO ptypeo, Square from, Square target)
int findMatch(const NumEffectState &state, Move m, const RatingEnv &) const
static bool matchDrop(const NumEffectState &state, Move move)
constexpr bool isPiece(Ptype ptype)
ptypeが空白やEDGEでないかのチェック
bool isPieceStand() const