6 #include "osl/move_generator/escape.h" 
   10 #include "osl/move_classifier/check.h" 
   12 #include "osl/move_generator/addEffect.h" 
   18 #include "osl/move_generator/captureEffectToAroundKing8.h" 
   19 #include "osl/move_generator/addEffect8Defense.h" 
   37     GetAllDefenseMoves::GetAllDefenseMoves(
bool verbose)
 
   38       : NtesukiDefenseMoveGenerator(verbose) {}
 
   39     GetAllDefenseMoves::~GetAllDefenseMoves() {}
 
   42     generate(
const NumEffectState& state,
 
   43              NtesukiMoveList& 
moves,
 
   44              const Square& last_to)
 
   46       assert (state.turn() == P);
 
   47       MoveVector move_candidates;
 
   49       moves = NtesukiMoveList(state, move_candidates);
 
   51     template void GetAllDefenseMoves::generate<BLACK>(
const NumEffectState& state,
 
   52                                                       NtesukiMoveList& 
moves,
 
   53                                                       const Square& last_to);
 
   54     template void GetAllDefenseMoves::generate<WHITE>(
const NumEffectState& state,
 
   55                                                       NtesukiMoveList& 
moves,
 
   56                                                       const Square& last_to);
 
   73     GetDefenseMoves::GetDefenseMoves(
bool verbose)
 
   74       : NtesukiDefenseMoveGenerator(verbose) {}
 
   75     GetDefenseMoves::~GetDefenseMoves(){}
 
   78     generate(
const NumEffectState& state,
 
   79              NtesukiMoveList& moves,
 
   80              const Square& last_to)
 
   82       MoveVector move_candidates;
 
   84       const Square pos = state.template kingSquare<P>();
 
   85       const bool check = state.hasEffectAt(PlayerTraits<P>::opponent, pos);
 
   90         moves = NtesukiMoveList(state, move_candidates);
 
   94       typedef move_action::Store action_t;
 
   95       assert (state.turn() == P);
 
   97       move_action::Store store_candidates(move_candidates);
 
  100 	generate(static_cast<const SimpleState &>(state),
 
  103 	generate(static_cast<const SimpleState &>(state),
 
  108 	generate(state.turn(), state, last_to, store_candidates);
 
  110       MoveVector move_safe;
 
  111       using namespace osl::move_classifier;
 
  112       for (
unsigned int i = 0; i < move_candidates.size(); ++i)
 
  114         const Move m = move_candidates[i];
 
  118           move_safe.push_back(m);
 
  122       move_action::Store store_safe(move_safe);
 
  127 	generate(static_cast<const SimpleState &>(state),
 
  130       moves = NtesukiMoveList(state, move_safe);
 
  132     template void GetDefenseMoves::generate<BLACK>(
const NumEffectState& state,
 
  133                                                    NtesukiMoveList& 
moves,
 
  134                                                    const Square& last_to);
 
  135     template void GetDefenseMoves::generate<WHITE>(
const NumEffectState& state,
 
  136                                                    NtesukiMoveList& 
moves,
 
  137                                                    const Square& last_to);