逃げる手を生成 生成される手はunique [詳細]
#include <escape_.h>
Static Public メソッド | |
template<Player P, bool CheapOnly> | |
static void | generateBlocking (const NumEffectState &state, Piece p, Square to, Square from, Action &action) |
Square toにある玉以外の駒pにfromにある駒から王手がかかってい る時に,長い利きの途中に入る手を 生成する(合駒,駒移動). breakThreatmateから直接呼ばれる.. | |
template<Player P, bool CheapOnly> | |
static void | generateBlockingKing (const NumEffectState &state, Piece p, Square from, Action &action) |
玉pにfromにある駒から王手がかかってい る時に,長い利きの途中に入る手を 生成する(合駒,駒移動). breakThreatmateから直接呼ばれる. | |
template<Player P> | |
static void | generateCaptureKing (const NumEffectState &state, Piece p, Square target, Action &action) |
相手の駒を取ることによって利きを逃れる. | |
template<Player P> | |
static void | generateCapture (const NumEffectState &state, Piece p, Square target, Action &action) |
template<Player P, Ptype Type> | |
static void | generateEscape (const NumEffectState &state, Piece p, Action &action, Int2Type< Type >) |
template<Player P, Ptype Type> | |
static void | generateEscape (const NumEffectState &state, Piece p, Action &action) |
template<Player P, bool cheapOnly> | |
static void | generateKingEscape (const NumEffectState &state, Action &action) |
template<Player P, Ptype Type, bool CheapOnly> | |
static void | generateMovesBy (const NumEffectState &state, Piece p, Piece attacker, Action &action) |
template<Player P, Ptype Type, bool CheapOnly> | |
static void | generateMovesBy (const NumEffectState &state, Piece p, Move last_move, Action &action) |
template<Player P, Ptype Type, bool CheapOnly> | |
static void | generateMovesBy (const NumEffectState &state, Piece p, Action &action) |
template<Player P, bool CheapOnly> | |
static void | generateMoves (const NumEffectState &state, Piece piece, Piece attacker, Action &action) |
attacker からの利きを逃れる. | |
template<Player P, bool shouldPromote, bool CheapOnly> | |
static void | generate (const NumEffectState &state, Piece piece, Action &action) |
attacker からの利きを逃れる. |
逃げる手を生成 生成される手はunique
void osl::move_generator::Escape< Action >::generate | ( | const NumEffectState & | state, | |
Piece | piece, | |||
Action & | action | |||
) | [static] |
void osl::move_generator::Escape< Action >::generateBlocking | ( | const NumEffectState & | state, | |
Piece | p, | |||
Square | to, | |||
Square | from, | |||
Action & | action | |||
) | [static] |
Square toにある玉以外の駒pにfromにある駒から王手がかかってい る時に,長い利きの途中に入る手を 生成する(合駒,駒移動). breakThreatmateから直接呼ばれる..
Square toにある玉以外の駒にfromにある駒から王手がかかっている時に,長い利きの途中に入る手を 生成する(合駒,駒移動). pが動く手は生成しない CheapOnlyの時は TODO: 自殺手も生成してしまう 短い利きの時にもこちらに入ってしまう.
escape_.tcc の 101 行で定義されています。
参照先 osl::Board_Table, osl::NumEffectState::countEffect(), osl::BoardTable::getShortOffset(), osl::Piece::isEmpty(), osl::Square::isOnBoard(), と osl::SimpleState::pieceAt().
void osl::move_generator::Escape< Action >::generateBlockingKing | ( | const NumEffectState & | state, | |
Piece | p, | |||
Square | from, | |||
Action & | action | |||
) | [static] |
玉pにfromにある駒から王手がかかってい る時に,長い利きの途中に入る手を 生成する(合駒,駒移動). breakThreatmateから直接呼ばれる.
玉pにfromにある駒から王手がかかっている時に,長い利きの途中に入る手を 生成する(合駒,駒移動). 短い利きの時にもこちらに入ってしまう
escape_.tcc の 132 行で定義されています。
参照先 osl::Board_Table, osl::BoardTable::getShortOffset(), osl::Piece::isEmpty(), osl::SimpleState::pieceAt(), osl::Piece::square(), と osl::Offset::zero().
static void osl::move_generator::Escape< Action >::generateCapture | ( | const NumEffectState & | state, | |
Piece | p, | |||
Square | target, | |||
Action & | action | |||
) | [inline, static] |
static void osl::move_generator::Escape< Action >::generateCaptureKing | ( | const NumEffectState & | state, | |
Piece | p, | |||
Square | target, | |||
Action & | action | |||
) | [inline, static] |
static void osl::move_generator::Escape< Action >::generateEscape | ( | const NumEffectState & | state, | |
Piece | p, | |||
Action & | action, | |||
Int2Type< Type > | ||||
) | [static] |
static void osl::move_generator::Escape< Action >::generateEscape | ( | const NumEffectState & | state, | |
Piece | p, | |||
Action & | action | |||
) | [inline, static] |
p | 逃げ出す駒 |
王の場合だけ特別扱いできる |
参照先 osl::KING, osl::Piece::owner(), osl::Piece::ptype(), と osl::Piece::square().
void osl::move_generator::Escape< Action >::generateKingEscape | ( | const NumEffectState & | state, | |
Action & | action | |||
) | [static] |
escape_.tcc の 182 行で定義されています。
void osl::move_generator::Escape< Action >::generateMoves | ( | const NumEffectState & | state, | |
Piece | piece, | |||
Piece | attacker, | |||
Action & | action | |||
) | [static] |
attacker からの利きを逃れる.
CAVEAT: 両王手の場合はPIECE_EMPTYにしておく必要がある
escape_.tcc の 211 行で定義されています。
参照先 osl::BISHOP, osl::GOLD, osl::KING, osl::KNIGHT, osl::LANCE, osl::PAWN, osl::PBISHOP, osl::PKNIGHT, osl::PLANCE, osl::PPAWN, osl::PROOK, osl::PSILVER, osl::Piece::ptype(), osl::ROOK, と osl::SILVER.
void osl::move_generator::Escape< Action >::generateMovesBy | ( | const NumEffectState & | state, | |
Piece | p, | |||
Piece | attacker, | |||
Action & | action | |||
) | [static] |
static void osl::move_generator::Escape< Action >::generateMovesBy | ( | const NumEffectState & | state, | |
Piece | p, | |||
Move | last_move, | |||
Action & | action | |||
) | [static] |
void osl::move_generator::Escape< Action >::generateMovesBy | ( | const NumEffectState & | state, | |
Piece | p, | |||
Action & | action | |||
) | [static] |
escape_.tcc の 196 行で定義されています。
参照先 osl::Piece::square().