[board] Update all the move generator submodules to use MoveBuilder instead of Move
Along the way update "manual" piece creation to use the macros instead.
This commit is contained in:
parent
ca9ff94d2a
commit
2174bcf009
7 changed files with 79 additions and 73 deletions
|
@ -3,7 +3,7 @@
|
|||
use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet};
|
||||
use crate::{
|
||||
piece::{Color, Piece, PlacedPiece},
|
||||
BitBoard, Move, Position,
|
||||
BitBoard, MoveBuilder, Position,
|
||||
};
|
||||
|
||||
move_generator_declaration!(KnightMoveGenerator);
|
||||
|
@ -21,12 +21,14 @@ impl<'pos> MoveGeneratorInternal for KnightMoveGenerator<'pos> {
|
|||
let quiet_moves_bb = knight_moves & empty_squares;
|
||||
let capture_moves_bb = knight_moves & opposing_pieces;
|
||||
|
||||
let quiet_moves = quiet_moves_bb
|
||||
.occupied_squares()
|
||||
.map(|to_sq| Move::new(placed_piece.piece(), placed_piece.square(), to_sq));
|
||||
let quiet_moves = quiet_moves_bb.occupied_squares().map(|to_sq| {
|
||||
MoveBuilder::new(placed_piece.piece(), placed_piece.square(), to_sq).build()
|
||||
});
|
||||
let capture_moves = capture_moves_bb.occupied_squares().map(|to_sq| {
|
||||
let captured_piece = position.piece_on_square(to_sq).unwrap();
|
||||
Move::new(placed_piece.piece(), placed_piece.square(), to_sq).capturing(captured_piece)
|
||||
MoveBuilder::new(placed_piece.piece(), placed_piece.square(), to_sq)
|
||||
.capturing(captured_piece)
|
||||
.build()
|
||||
});
|
||||
|
||||
MoveSet::new(placed_piece)
|
||||
|
@ -38,7 +40,7 @@ impl<'pos> MoveGeneratorInternal for KnightMoveGenerator<'pos> {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::Square;
|
||||
use crate::{piece, Move, Square};
|
||||
use std::collections::HashSet;
|
||||
|
||||
#[test]
|
||||
|
@ -60,14 +62,14 @@ mod tests {
|
|||
*/
|
||||
|
||||
let expected_moves = [
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::C3),
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::D2),
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::F2),
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::G3),
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::C5),
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::D6),
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::G5),
|
||||
Move::new(Piece::knight(Color::White), Square::E4, Square::F6),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::C3).build(),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::D2).build(),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::F2).build(),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::G3).build(),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::C5).build(),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::D6).build(),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::G5).build(),
|
||||
MoveBuilder::new(piece!(White Knight), Square::E4, Square::F6).build(),
|
||||
];
|
||||
|
||||
let mut generated_moves: HashSet<Move> = generator.iter().cloned().collect();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue