1#ifndef OSL_MOVE_GENERATOR_ESCAPE_H
2#define OSL_MOVE_GENERATOR_ESCAPE_H
10 namespace move_generator
16 template<
class Action>
26 template<Player P,
bool CheapOnly>
34 template<Player P,
bool CheapOnly>
49 template<Player P,Ptype Type>
55 template<Player P,Ptype Type>
63 generatePtype<P,Type>(state,p,action);
68 CheckAction checkAction(state,action,p.
square());
70 generatePtype<P,Type>(state,p,
76 template<Player P,
bool cheapOnly>
82 template<Player P,Ptype Type,
bool CheapOnly>
84 template<Player P,Ptype Type,
bool CheapOnly>
86 template<Player P,Ptype Type,
bool CheapOnly>
93 template<Player P,
bool CheapOnly>
99 template<Player P,
bool shouldPromote,
bool CheapOnly>
106 template <
class Action>
116 template <
class Action>
129 template <
size_t Capacity>
135 template <
size_t Capacity>
144 template <
class Action>
const Square square() const
static void generateKingEscape(const NumEffectState &state, Action &action)
static void generateCaptureKing(const NumEffectState &state, Piece p, Square target, Action &action)
相手の駒を取ることによって利きを逃れる.
static void generateMovesBy(const NumEffectState &state, Piece p, Action &action)
static void generateBlocking(const NumEffectState &state, Piece p, Square to, Square from, Action &action)
Square toにある玉以外の駒pにfromにある駒から王手がかかってい る時に,長い利きの途中に入る手を 生成する(合駒,駒移動). breakThreatmateから直接呼ばれる.
static void generateCapture(const NumEffectState &state, Piece p, Square target, Action &action)
static void generateEscape(const NumEffectState &state, Piece p, Action &action, Int2Type< Type >)
static void generate(const NumEffectState &state, Piece piece, Action &action)
attacker からの利きを逃れる.
static void generateEscape(const NumEffectState &state, Piece p, Action &action)
static void generateMoves(const NumEffectState &state, Piece piece, Piece attacker, Action &action)
attacker からの利きを逃れる.
static void generateBlockingKing(const NumEffectState &state, Piece p, Square from, Action &action)
玉pにfromにある駒から王手がかかってい る時に,長い利きの途中に入る手を 生成する(合駒,駒移動). breakThreatmateから直接呼ばれる.
static void generateMovesBy(const NumEffectState &state, Piece p, Move last_move, Action &action)
static void generateMovesBy(const NumEffectState &state, Piece p, Piece attacker, Action &action)
static void generate(const NumEffectState &state, MoveVector &out)
不成の受けも作成
static void generateCheap(const NumEffectState &state, MoveVector &out)
static void generate(const NumEffectState &state, Piece piece, Action &a)
static void generateCheapKingEscape(const NumEffectState &state, FixedCapacityVector< Move, Capacity > &out)
static void generateCheap(const NumEffectState &state, Piece piece, Action &a)
static void generateKingEscape(const NumEffectState &state, FixedCapacityVector< Move, Capacity > &out)
不成の受けは作成しないので必要な場合はユーザが作成
static void generate(const NumEffectState &state, Piece piece, MoveVector &out)
static void generate(const NumEffectState &state, Piece piece, Action &a)
static void generateCheap(const NumEffectState &state, Piece piece, MoveVector &out)