implemented general move generation method for queens

This commit is contained in:
Varga Dávid Lajos
2025-11-20 12:26:16 +01:00
parent a51d5e2652
commit 9fa298ed51

View File

@@ -1 +1,36 @@
use super::*;
use super::*;
impl Board {
fn add_queen_moves(&self, capture_buffer: &mut MoveBuffer, quiet_buffer: &mut MoveBuffer, move_mask: u64) {
let piece_index = 4 + self.side_to_move * 6;
let mut queens = self.bitboards[piece_index as usize];
let empty = !self.occupancy[2];
let opponents = self.occupancy[1 - self.side_to_move as usize];
while queens != 0 {
let from_sq = pop_lsb(&mut queens);
let raw_move_map = self.get_pseudo_queen_moves(from_sq) & move_mask;
let move_map = self.get_pin_masked_moves(raw_move_map, from_sq);
let mut quiet_map = move_map & empty;
let mut capture_map = move_map & opponents;
while quiet_map != 0 {
let to_sq = pop_lsb(&mut quiet_map);
quiet_buffer.add(BitMove::quiet(
from_sq as u8,
to_sq as u8,
None
));
}
while capture_map != 0 {
let to_sq = pop_lsb(&mut capture_map);
capture_buffer.add(BitMove::capture(
from_sq as u8,
to_sq as u8,
None
));
}
}
}
}