bool legal_evasion_exist(const board_t * board, const attack_t * attack) { list_t list[1]; // dummy ASSERT(board!=NULL); ASSERT(attack!=NULL); return gen_evasions(list,board,attack,true,true); }
void gen_pseudo_evasions(list_t * list, const board_t * board, const attack_t * attack) { ASSERT(list!=NULL); ASSERT(board!=NULL); ASSERT(attack!=NULL); gen_evasions(list,board,attack,false,false); // debug ASSERT(list_is_ok(list)); }
void gen_legal_moves(list_t * list) { attack_t attack[1]; ASSERT(list!=NULL); attack_set(attack); if (ATTACK_IN_CHECK(attack)) { gen_evasions(list,attack); } else { gen_moves(list); list_filter(list,&pseudo_is_legal,true); } }