diff --git a/board/Cargo.toml b/board/Cargo.toml index 2f8727d..70584c2 100644 --- a/board/Cargo.toml +++ b/board/Cargo.toml @@ -7,3 +7,4 @@ edition = "2021" [dependencies] chessfriend_core = { path = "../core" } +chessfriend_bitboard = { path = "../bitboard" } diff --git a/board/src/lib.rs b/board/src/lib.rs index 2ed3495..243686e 100644 --- a/board/src/lib.rs +++ b/board/src/lib.rs @@ -14,5 +14,3 @@ mod sight; pub use piece::{Color, Piece}; pub use position::{MoveBuilder as MakeMoveBuilder, Position, PositionBuilder}; pub use r#move::{Castle, MakeMoveError, Move, MoveBuilder}; - -pub(crate) use bitboard::BitBoard; diff --git a/board/src/move_generator/bishop.rs b/board/src/move_generator/bishop.rs index cd259f7..404d68b 100644 --- a/board/src/move_generator/bishop.rs +++ b/board/src/move_generator/bishop.rs @@ -3,8 +3,9 @@ use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; use crate::{ piece::{Color, Piece, PlacedPiece}, - BitBoard, MoveBuilder, Position, + MoveBuilder, Position, }; +use chessfriend_bitboard::BitBoard; use chessfriend_core::Direction; move_generator_declaration!(ClassicalMoveGenerator); @@ -60,7 +61,8 @@ impl<'pos> MoveGeneratorInternal for ClassicalMoveGenerator<'pos> { #[cfg(test)] mod tests { use super::*; - use crate::{piece, piece::Color, position, position::DiagramFormatter, BitBoard}; + use crate::{piece, piece::Color, position, position::DiagramFormatter}; + use chessfriend_bitboard::BitBoard; #[test] fn classical_single_bishop_bitboard() { diff --git a/board/src/move_generator/king.rs b/board/src/move_generator/king.rs index 06ae76e..643a987 100644 --- a/board/src/move_generator/king.rs +++ b/board/src/move_generator/king.rs @@ -7,8 +7,9 @@ use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; use crate::{ piece::{Color, Piece, PlacedPiece}, r#move::Castle, - BitBoard, Move, MoveBuilder, Position, + Move, MoveBuilder, Position, }; +use chessfriend_bitboard::BitBoard; move_generator_declaration!(KingMoveGenerator, struct); move_generator_declaration!(KingMoveGenerator, new); @@ -76,7 +77,8 @@ impl<'pos> MoveGeneratorInternal for KingMoveGenerator<'pos> { #[cfg(test)] mod tests { use super::*; - use crate::Square; + use chessfriend_bitboard::bitboard; + use chessfriend_core::Square; use std::collections::HashSet; #[test] diff --git a/board/src/move_generator/knight.rs b/board/src/move_generator/knight.rs index 50a7ad0..64b360f 100644 --- a/board/src/move_generator/knight.rs +++ b/board/src/move_generator/knight.rs @@ -3,8 +3,9 @@ use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; use crate::{ piece::{Color, Piece, PlacedPiece}, - BitBoard, MoveBuilder, Position, + MoveBuilder, Position, }; +use chessfriend_bitboard::BitBoard; move_generator_declaration!(KnightMoveGenerator); @@ -40,7 +41,8 @@ impl<'pos> MoveGeneratorInternal for KnightMoveGenerator<'pos> { #[cfg(test)] mod tests { use super::*; - use crate::{piece, position, Move, Square}; + use crate::{piece, position, Move}; + use chessfriend_core::Square; use std::collections::HashSet; #[test] diff --git a/board/src/move_generator/mod.rs b/board/src/move_generator/mod.rs index eb080c3..ed5ac74 100644 --- a/board/src/move_generator/mod.rs +++ b/board/src/move_generator/mod.rs @@ -14,8 +14,9 @@ pub(crate) use move_set::MoveSet; use crate::{ piece::{Color, Piece, PlacedPiece}, - Move, Position, Square, + Move, Position, }; +use chessfriend_core::Square; use std::collections::BTreeMap; trait MoveGenerator { @@ -34,7 +35,10 @@ macro_rules! move_generator_declaration { pub(super) struct $name<'pos> { position: &'pos $crate::Position, color: $crate::piece::Color, - move_sets: std::collections::BTreeMap<$crate::Square, $crate::move_generator::MoveSet>, + move_sets: std::collections::BTreeMap< + chessfriend_core::Square, + $crate::move_generator::MoveSet, + >, } }; ($name:ident, new) => { @@ -54,12 +58,11 @@ macro_rules! move_generator_declaration { self.move_sets.values().map(|set| set.moves()).flatten() } - fn bitboard(&self) -> $crate::BitBoard { - self.move_sets - .values() - .fold($crate::BitBoard::empty(), |partial, mv_set| { - partial | mv_set.bitboard() - }) + fn bitboard(&self) -> chessfriend_bitboard::BitBoard { + self.move_sets.values().fold( + chessfriend_bitboard::BitBoard::empty(), + |partial, mv_set| partial | mv_set.bitboard(), + ) } } }; diff --git a/board/src/move_generator/move_generator.rs b/board/src/move_generator/move_generator.rs index 689e47d..2ef4922 100644 --- a/board/src/move_generator/move_generator.rs +++ b/board/src/move_generator/move_generator.rs @@ -43,7 +43,8 @@ impl<'a> Moves<'a> { #[cfg(test)] mod tests { - use crate::{piece, position, r#move::AlgebraicMoveFormatter, Move, MoveBuilder, Square}; + use crate::{piece, position, r#move::AlgebraicMoveFormatter, Move, MoveBuilder}; + use chessfriend_core::Square; use std::collections::HashSet; #[test] diff --git a/board/src/move_generator/move_set.rs b/board/src/move_generator/move_set.rs index 1c44766..1c22eac 100644 --- a/board/src/move_generator/move_set.rs +++ b/board/src/move_generator/move_set.rs @@ -1,4 +1,5 @@ -use crate::{piece::PlacedPiece, BitBoard, Move}; +use crate::{piece::PlacedPiece, Move}; +use chessfriend_bitboard::BitBoard; #[derive(Clone, Debug, Eq, PartialEq)] struct BitBoardSet { diff --git a/board/src/move_generator/pawn.rs b/board/src/move_generator/pawn.rs index 7f77e15..d366405 100644 --- a/board/src/move_generator/pawn.rs +++ b/board/src/move_generator/pawn.rs @@ -2,8 +2,9 @@ use crate::{ piece::{Color, Piece, Shape}, - BitBoard, Move, MoveBuilder, Position, + Move, MoveBuilder, Position, }; +use chessfriend_bitboard::BitBoard; enum MoveList { Quiet = 0, @@ -246,7 +247,8 @@ impl<'pos> Iterator for PawnMoveGenerator<'pos> { mod tests { use super::*; use crate::position::DiagramFormatter; - use crate::{piece, Position, Square}; + use crate::{piece, Position}; + use chessfriend_core::Square; use std::collections::HashSet; #[test] diff --git a/board/src/move_generator/queen.rs b/board/src/move_generator/queen.rs index f012d8c..fb96dd7 100644 --- a/board/src/move_generator/queen.rs +++ b/board/src/move_generator/queen.rs @@ -3,8 +3,9 @@ use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; use crate::{ piece::{Color, Piece, PlacedPiece}, - BitBoard, MoveBuilder, Position, + MoveBuilder, Position, }; +use chessfriend_bitboard::BitBoard; use chessfriend_core::Direction; move_generator_declaration!(ClassicalMoveGenerator); @@ -66,7 +67,8 @@ impl<'pos> MoveGeneratorInternal for ClassicalMoveGenerator<'pos> { #[cfg(test)] mod tests { use super::*; - use crate::{piece, position, position::DiagramFormatter, BitBoard, Color}; + use crate::{piece, position, position::DiagramFormatter, Color}; + use chessfriend_bitboard::{bitboard, BitBoard}; #[test] fn classical_single_queen_bitboard() { diff --git a/board/src/move_generator/rook.rs b/board/src/move_generator/rook.rs index c6dbb7b..570255a 100644 --- a/board/src/move_generator/rook.rs +++ b/board/src/move_generator/rook.rs @@ -3,8 +3,9 @@ use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet}; use crate::{ piece::{Color, Piece, PlacedPiece}, - BitBoard, MoveBuilder, Position, + MoveBuilder, Position, }; +use chessfriend_bitboard::BitBoard; use chessfriend_core::Direction; move_generator_declaration!(ClassicalMoveGenerator); @@ -62,7 +63,8 @@ impl<'pos> MoveGeneratorInternal for ClassicalMoveGenerator<'pos> { #[cfg(test)] mod tests { use super::*; - use crate::{piece::Piece, position, position::DiagramFormatter, BitBoard, Color, Position}; + use crate::{piece::Piece, position, position::DiagramFormatter, Color, Position}; + use chessfriend_bitboard::{bitboard, BitBoard}; use chessfriend_core::Square; #[test] diff --git a/board/src/position/builders/move_builder.rs b/board/src/position/builders/move_builder.rs index 17eb36d..4530543 100644 --- a/board/src/position/builders/move_builder.rs +++ b/board/src/position/builders/move_builder.rs @@ -4,8 +4,9 @@ use crate::{ piece::{PlacedPiece, Shape}, position::flags::Flags, r#move::Castle, - BitBoard, Color, MakeMoveError, Move, Piece, Position, + Color, MakeMoveError, Move, Piece, Position, }; +use chessfriend_bitboard::BitBoard; use chessfriend_core::{Direction, Square}; /// A position builder that builds a new position by making a move. diff --git a/board/src/position/builders/position_builder.rs b/board/src/position/builders/position_builder.rs index 0866094..88838b7 100644 --- a/board/src/position/builders/position_builder.rs +++ b/board/src/position/builders/position_builder.rs @@ -1,14 +1,13 @@ // Eryn Wells use crate::{ - bitboard::BitBoardBuilder, piece::{PlacedPiece, Shape}, position::{flags::Flags, piece_sets::PieceBitBoards}, r#move::Castle, - BitBoard, Color, MakeMoveError, Move, Piece, Position, + Color, MakeMoveError, Move, Piece, Position, }; +use chessfriend_core::{Rank, Square}; use std::collections::BTreeMap; -use chessfriend_core::Square; #[derive(Clone)] pub struct Builder { @@ -109,8 +108,8 @@ impl Builder { impl Default for Builder { fn default() -> Self { - let white_king_square = Square::king_starting_square(Color::White); - let black_king_square = Square::king_starting_square(Color::Black); + let white_king_square = Square::E1; + let black_king_square = Square::E8; let pieces = BTreeMap::from_iter([ (white_king_square, piece!(White King)), diff --git a/board/src/position/piece_sets.rs b/board/src/position/piece_sets.rs index 856a3e8..d07eb2a 100644 --- a/board/src/position/piece_sets.rs +++ b/board/src/position/piece_sets.rs @@ -2,8 +2,9 @@ use crate::{ piece::{Piece, PlacedPiece}, - BitBoard, Color, + Color, }; +use chessfriend_bitboard::BitBoard; use chessfriend_core::Square; #[derive(Debug, Eq, PartialEq)] @@ -125,7 +126,7 @@ impl PieceBitBoards { impl FromIterator for PieceBitBoards { fn from_iter>(iter: T) -> Self { - let mut pieces = Self::default(); + let mut pieces: Self = Default::default(); for piece in iter { let _ = pieces.place_piece(&piece); diff --git a/board/src/position/pieces.rs b/board/src/position/pieces.rs index 959a9da..8530869 100644 --- a/board/src/position/pieces.rs +++ b/board/src/position/pieces.rs @@ -2,7 +2,7 @@ use super::Position; use crate::piece::{Color, Piece, PlacedPiece, Shape}; -use crate::BitBoard; +use chessfriend_bitboard::BitBoard; use chessfriend_core::Square; pub struct Pieces<'a> { diff --git a/board/src/position/position.rs b/board/src/position/position.rs index e1f2f92..82ef1bd 100644 --- a/board/src/position/position.rs +++ b/board/src/position/position.rs @@ -7,8 +7,9 @@ use crate::{ position::DiagramFormatter, r#move::Castle, sight::Sight, - BitBoard, Move, + Move, }; +use chessfriend_bitboard::BitBoard; use chessfriend_core::Square; use std::{cell::OnceCell, fmt}; diff --git a/board/src/sight.rs b/board/src/sight.rs index 92b295f..ffed3f7 100644 --- a/board/src/sight.rs +++ b/board/src/sight.rs @@ -2,8 +2,9 @@ use crate::{ piece::{Color, PlacedPiece, Shape}, - BitBoard, Position, + Position, }; +use chessfriend_bitboard::BitBoard; use chessfriend_core::Direction; pub(crate) trait Sight { @@ -174,7 +175,8 @@ mod tests { } mod pawn { - use crate::{sight::Sight, BitBoard}; + use crate::sight::Sight; + use chessfriend_bitboard::{bitboard, BitBoard}; use chessfriend_core::Square; sight_test!(e4_pawn, piece!(White Pawn on E4), bitboard!(D5, F5)); @@ -234,6 +236,7 @@ mod tests { #[macro_use] mod knight { use crate::sight::Sight; + use chessfriend_bitboard::bitboard; sight_test!( f6_knight, @@ -244,6 +247,7 @@ mod tests { mod bishop { use crate::sight::Sight; + use chessfriend_bitboard::bitboard; sight_test!( c2_bishop, @@ -254,6 +258,7 @@ mod tests { mod rook { use crate::sight::Sight; + use chessfriend_bitboard::bitboard; sight_test!( g3_rook,