This commit is contained in:
Eryn Wells 2025-05-08 17:37:59 -07:00
parent 091cc99cb3
commit 424d348b2d
3 changed files with 31 additions and 0 deletions

4
Makefile Normal file
View file

@ -0,0 +1,4 @@
all:
cargo build

0
board/src/errors.rs Normal file
View file

View file

@ -0,0 +1,27 @@
// Eryn Wells <eryn@erynwells.me>
use chessfriend_bitboard::BitBoard;
use chessfriend_core::{Direction, Square};
fn _find_ray_connecting_squares(origin_square: Square, target_square: Square) -> BitBoard {
macro_rules! ray {
($square:expr, $direction:expr) => {
($direction, BitBoard::ray($square, $direction))
};
}
let target: BitBoard = target_square.into();
match Direction::ALL
.iter()
.map(|direction| ray!(origin_square, *direction))
.find(|(direction, &ray)| (ray & target).is_populated())
{
Some((direction, ray)) => {
if let Some(first_occupied_square) = BitBoard::$occupied_squares(&(ray & $blockers)).next()
let remainder = BitBoard::ray(first_occupied_square, direction);
let attack_ray = ray & !remainder;
attack_ray * ray
}
None => BitBoard::EMPTY,
}
}