diff --git a/headers/moves.h b/headers/moves.h index 5fa1b52..35f4730 100644 --- a/headers/moves.h +++ b/headers/moves.h @@ -6,4 +6,5 @@ int knightMove(game *g, move* moves); int rookMove(game *g, move *moves); int bishopMove(game *g, move *moves); int kingMove(game *g, move *moves); +int queenMove(game *g, move *moves); #endif diff --git a/src/main.c b/src/main.c index 0cded1b..49783ae 100644 --- a/src/main.c +++ b/src/main.c @@ -61,6 +61,7 @@ int main() { cnt += rookMove(g,(mov+cnt)); cnt += bishopMove(g,(mov+cnt)); cnt += kingMove(g,(mov+cnt)); + cnt += queenMove(g,(mov+cnt)); move *m = &mov[rand() % cnt]; char *end = ""; diff --git a/src/moves.c b/src/moves.c index 7e6cc64..0ae4f2e 100644 --- a/src/moves.c +++ b/src/moves.c @@ -238,12 +238,19 @@ int bishopScan(game *g, move *moves, long long w, long long b) { return index; } -int kingMove(game *g, move *moves){ - return kingScan(g,moves,g->white.king,g->black.king); +int queenMove(game *g, move *moves){ + int size = 0; + long long w,b; + w = g->white.queen; + b = g->black.queen; + size += rookScan(g,moves,w,b); + size += bishopScan(g,moves,w,b); + return size; } -int kingScan(game *g, move *moves, long long w, long long b) { - long long king = g->whiteToMove ? w : b; + +int kingMove(game *g, move *moves){ + long long king = g->whiteToMove ? g->white.king : g->black.king; long long occupied = g->whiteToMove ? fullSet(&g->white) : fullSet(&g->black); int index = 0;