My Project
osl::move_generator::AddEffectWithEffect< Action > Class Template Reference

利きをつける手を生成 利きを持つstateでしか使えない. More...

#include <addEffectWithEffect.h>

Static Public Member Functions

template<Player P, bool isAttackToKing>
static void generate (const NumEffectState &state, Square target, Action &action, bool &hasPawnCheckmate)
 
template<Player P, bool isAttackToKing>
static void generate (const NumEffectState &state, Square target, Action &action)
 

Detailed Description

template<class Action>
class osl::move_generator::AddEffectWithEffect< Action >

利きをつける手を生成 利きを持つstateでしか使えない.

アルゴリズム:

  • 利きをつけたいマスから8近傍方向(長い利きも),桂馬近傍の自分の利きをチェック
  • 自分の利きがあった時に,そこに移動したら問題のマスに利きをつけられる駒の種類かをチェックする 特徴:
  • 相手玉の自由度が小さく,近傍に自分の利きがない時は高速に判定 isAttackToKing == true の時 既に王手がかかっている状態は扱わない 自殺手は生成しない? isAttackToKing == false の時 Additional Effect(利きが付いている方向の後ろに長い利きを足す)はいくつでも扱う. Shadow Effect(相手の利きが付いている方向の後ろに味方の長い利きを足す)は相手が1つの時だけ足す. 自殺手は生成しない.

Definition at line 26 of file addEffectWithEffect.h.

Member Function Documentation

◆ generate() [1/2]

template<class Action >
template<Player P, bool isAttackToKing>
static void osl::move_generator::AddEffectWithEffect< Action >::generate ( const NumEffectState & state,
Square target,
Action & action )
inlinestatic

◆ generate() [2/2]

template<class Action >
template<Player P, bool isAttackToKing>
static void osl::move_generator::AddEffectWithEffect< Action >::generate ( const NumEffectState & state,
Square target,
Action & action,
bool & hasPawnCheckmate )
static

The documentation for this class was generated from the following file: