implemeneted general move generation method for knight moves

This commit is contained in:
Varga Dávid Lajos
2025-11-19 21:05:58 +01:00
parent 2e82a52f27
commit 40e2c50209
3 changed files with 37 additions and 3 deletions

View File

@@ -4,6 +4,7 @@ mod knights;
use super::board::Board;
use super::movebuffer::MoveBuffer;
use super::bitmove::BitMove;
use super::utils::*;
impl Board {

View File

@@ -1 +1,36 @@
use super::*;
use super::*;
impl Board {
fn add_knight_moves(&self, capture_buffer: &mut MoveBuffer, quiet_buffer: &mut MoveBuffer, move_mask: u64) {
let piece_index = 1 + self.side_to_move * 6;
let mut knights = self.bitboards[piece_index as usize];
let empty = !self.occupancy[2];
let opponents = self.occupancy[1 - self.side_to_move as usize];
while knights != 0 {
let from_sq = pop_lsb(&mut knights);
let raw_move_map = self.get_pseudo_knight_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
));
}
}
}
}

View File

@@ -1,5 +1,3 @@
use crate::bitboard::utils::pop_lsb;
use super::*;
impl Board {