#include #include "types.h" long long fullSet(sets *s) { return s->bishops ^ s->king ^ s->knights ^ s->pawns ^ s->queen ^ s->rooks; } long long fullSetBoth(game *g) { return fullSet(&g->white) ^ fullSet(&g->black); } void print_bitboard(long long bitboard) { for (int i = 63; i >= 0; i--) { // Check if the i-th bit is set if ((bitboard >> i) & 1) { printf("1 "); } else { printf("0 "); } // Print a newline every 8 bits (for rows) if (i % 8 == 0) { printf("\n"); } } printf("\n"); } long long *findSet(game *g, long long bit) { if (g->white.pawns & bit) { return &g->white.pawns; } else if (g->white.knights & bit) { return &g->white.knights; } else if (g->white.bishops & bit) { return &g->white.bishops; } else if (g->white.rooks & bit) { return &g->white.rooks; } else if (g->white.queen & bit) { return &g->white.queen; } else if (g->white.king & bit) { return &g->white.king; } else if (g->black.pawns & bit) { return &g->black.pawns; } else if (g->black.knights & bit) { return &g->black.knights; } else if (g->black.bishops & bit) { return &g->black.bishops; } else if (g->black.rooks & bit) { return &g->black.rooks; } else if (g->black.queen & bit) { return &g->black.queen; } else if (g->black.king & bit) { return &g->black.king; } else { return NULL; } } long long *charToSet(game *g, char c) { switch (c) { case 'P': return &g->white.pawns; case 'N': return &g->white.knights; case 'B': return &g->white.bishops; case 'R': return &g->white.rooks; case 'Q': return &g->white.queen; case 'K': return &g->white.king; case 'p': return &g->black.pawns; case 'n': return &g->black.knights; case 'b': return &g->black.bishops; case 'r': return &g->black.rooks; case 'q': return &g->black.queen; case 'k': return &g->black.king; default: return NULL; } }