Move naive move generation into sub-module

This commit is contained in:
Bruno BELANYI 2022-07-24 16:24:35 +02:00
parent 23d01d4d3f
commit 868edda9d7
9 changed files with 19 additions and 63 deletions

View file

@ -2,12 +2,8 @@
pub mod magic;
pub use magic::*;
// Move generation implementation details
pub(crate) mod bishop;
pub(crate) mod king;
pub(crate) mod knight;
pub(crate) mod pawn;
pub(crate) mod rook;
// Naive move generation
pub mod naive;
// Magic bitboard generation
pub(crate) mod wizardry;

View file

@ -1,4 +1,4 @@
use crate::board::{Bitboard, CastleRights, Color, Direction, File, Square};
use crate::board::{Bitboard, Direction, Square};
/// Compute a king's movement. No castling moves included
#[allow(unused)]
@ -10,22 +10,6 @@ pub fn king_moves(square: Square) -> Bitboard {
.fold(Bitboard::EMPTY, |lhs, rhs| lhs | rhs)
}
/// Compute a king's castling moves, given its [Color] and [CastleRights].
#[allow(unused)]
pub fn king_castling_moves(color: Color, castle_rights: CastleRights) -> Bitboard {
let rank = color.first_rank();
let king_side_square = Square::new(File::G, rank);
let queen_side_square = Square::new(File::C, rank);
match castle_rights {
CastleRights::NoSide => Bitboard::EMPTY,
CastleRights::KingSide => king_side_square.into_bitboard(),
CastleRights::QueenSide => queen_side_square.into_bitboard(),
CastleRights::BothSides => king_side_square | queen_side_square,
}
}
#[cfg(test)]
mod test {
use super::*;
@ -186,40 +170,4 @@ mod test {
| Square::F6
);
}
#[test]
fn castling_moves() {
assert_eq!(
king_castling_moves(Color::White, CastleRights::NoSide),
Bitboard::EMPTY
);
assert_eq!(
king_castling_moves(Color::Black, CastleRights::NoSide),
Bitboard::EMPTY
);
assert_eq!(
king_castling_moves(Color::White, CastleRights::KingSide),
Square::G1.into_bitboard()
);
assert_eq!(
king_castling_moves(Color::Black, CastleRights::KingSide),
Square::G8.into_bitboard()
);
assert_eq!(
king_castling_moves(Color::White, CastleRights::QueenSide),
Square::C1.into_bitboard()
);
assert_eq!(
king_castling_moves(Color::Black, CastleRights::QueenSide),
Square::C8.into_bitboard()
);
assert_eq!(
king_castling_moves(Color::White, CastleRights::BothSides),
Square::C1 | Square::G1
);
assert_eq!(
king_castling_moves(Color::Black, CastleRights::BothSides),
Square::C8 | Square::G8
);
}
}

14
src/movegen/naive/mod.rs Normal file
View file

@ -0,0 +1,14 @@
pub mod bishop;
pub use bishop::*;
pub mod king;
pub use king::*;
pub mod knight;
pub use knight::*;
pub mod pawn;
pub use pawn::*;
pub mod rook;
pub use rook::*;

View file

@ -1,6 +1,5 @@
use crate::board::{Bitboard, Square};
use crate::movegen::bishop::bishop_moves;
use crate::movegen::rook::rook_moves;
use crate::movegen::naive::{bishop_moves, rook_moves};
use crate::movegen::Magic;
use super::mask::{generate_bishop_mask, generate_rook_mask};

View file

@ -1,6 +1,5 @@
use crate::board::{Bitboard, File, Rank, Square};
use crate::movegen::bishop::bishop_moves;
use crate::movegen::rook::rook_moves;
use crate::movegen::naive::{bishop::bishop_moves, rook::rook_moves};
/// Compute the relevancy mask for a bishop on a given [Square].
pub fn generate_bishop_mask(square: Square) -> Bitboard {