Skip to content

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.