Move Generation
You can generate different types of moves with the MoveGenType
enum.
cpp
enum class MoveGenType : uint8_t { ALL, CAPTURE, QUIET };
cpp
class movegen {
template <MoveGenType mt>
static void legalmoves(Movelist& movelist, const Board& board , int pieces = 63);
}
TIP
Since 0.4.0 you can pass pieces
to legalmoves
to generate moves only for certain pieces. Combine the PieceGenType
enum with a bitwise or |
to generate moves for multiple piece types.
cpp
enum PieceGenType {
PAWN = 1,
KNIGHT = 2,
BISHOP = 4,
ROOK = 8,
QUEEN = 16,
KING = 32,
};
TIP
While legalmoves<MoveGenType::CAPTURE> + legalmoves<MoveGenType::QUIET> == legalmoves<MoveGenType::ALL>
, it is more efficient to use the latter.