3#ifndef PROGRESS_EFFECT5X3_H
4#define PROGRESS_EFFECT5X3_H
56 assert(progress >= 0);
57 const int rank = progress / 8;
66 assert(progress >= 0);
67 const int rank = progress / 8;
91 template <Player Attack>
94 template <Player Attack,
bool AlwaysPromotable,
bool AlwaysNotPromotable>
111 template <Player Defense>
Square kingSquare() const
ProgressN< 16 > Progress16
int countEffectPieces(const NumEffectState &state, Player attack) const
const Progress16 progress16bonus(Player p) const
void updateStand(Player pl, Move m)
static int attackEffect3(const NumEffectState &state, Player attack, Square target)
Effect5x3WithBonus expect(const NumEffectState &state, Move move) const
static int makeProgressAreaBonus(const NumEffectState &state, Square king)
void updateProgressBonuses(const NumEffectState &state, bool black=true, bool white=true)
static PieceMask makeEffectMask(const NumEffectState &state)
void update(const NumEffectState &new_state, Move last_move)
CArray< PieceMask, 2 > effect_mask
CArray< int, 2 > progress_bonuses
const PieceMask effect5x3Mask(Player p) const
玉の周囲5x3の領域の利きの数と持駒から計算した進行度.
static int makeProgressStand(Player attack, const NumEffectState &state)
CArray< int, 2 > progresses
int progress(Player p) const
const Progress16 progress16() const
static int makeProgress(const NumEffectState &state)
const Progress16 progress16(Player p) const
CArray< int, 2 > area_progresses
CArray< int, 2 > stand_progresses
static int makeProgressArea(Player attack, const NumEffectState &state, Square king)
void update(const NumEffectState &new_state, Move last_move)
static const Progress16 progress16each(int progress)
0-15 の値を返す.
static void updateStand(int &old_stand, Move last_move)
static const Progress16 progress16(int progress)
0-15 の値を返す
static int makeProgress(Player defense, const NumEffectState &state)
王の位置を指定したprogressの計算.
Effect5x3 expect(const NumEffectState &state, Move move) const
static int makeProgressAll(Player defense, const NumEffectState &state, Square king)