Remove the move lists from bishop, knight, queen, and rook move set construction

These are the easy ones.
This commit is contained in:
Eryn Wells 2024-01-28 15:48:11 -08:00
parent cd3cb82192
commit 5e3ef9d21e
4 changed files with 18 additions and 40 deletions

View file

@ -42,16 +42,12 @@ impl MoveGeneratorInternal for ClassicalMoveGenerator {
update_moves_with_ray!(SouthEast, occupied_squares);
update_moves_with_ray!(SouthWest, occupied_squares);
let quiet_moves_bb = all_moves & (empty_squares | !friendly_pieces);
let capture_moves_bb = all_moves & opposing_pieces;
let map_to_move = |sq| MoveBuilder::new(*piece, square, sq).build();
let quiet_moves = quiet_moves_bb.occupied_squares().map(map_to_move);
let capture_moves = capture_moves_bb.occupied_squares().map(map_to_move);
let quiet_moves = all_moves & (empty_squares | !friendly_pieces);
let capture_moves = all_moves & opposing_pieces;
MoveSet::new(placed_piece)
.quiet_moves(quiet_moves_bb, quiet_moves)
.capture_moves(capture_moves_bb, capture_moves)
.quiet_moves(quiet_moves)
.capture_moves(capture_moves)
}
}

View file

@ -17,22 +17,12 @@ impl MoveGeneratorInternal for KnightMoveGenerator {
let empty_squares = position.empty_squares();
let knight_moves = BitBoard::knight_moves(placed_piece.square());
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| {
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();
MoveBuilder::new(*placed_piece.piece(), placed_piece.square(), to_sq)
.capturing(captured_piece)
.build()
});
let quiet_moves = knight_moves & empty_squares;
let capture_moves = knight_moves & opposing_pieces;
MoveSet::new(placed_piece)
.quiet_moves(quiet_moves_bb, quiet_moves)
.capture_moves(capture_moves_bb, capture_moves)
.quiet_moves(quiet_moves)
.capture_moves(capture_moves)
}
}
@ -72,7 +62,7 @@ mod tests {
MoveBuilder::new(piece!(White Knight), Square::E4, Square::F6).build(),
];
let mut generated_moves: HashSet<Move> = generator.iter().cloned().collect();
let mut generated_moves: HashSet<Move> = generator.iter().collect();
for ex_move in expected_moves {
assert!(

View file

@ -1,7 +1,7 @@
// Eryn Wells <eryn@erynwells.me>
use super::{move_generator_declaration, MoveGeneratorInternal, MoveSet};
use crate::{MoveBuilder, Position};
use crate::Position;
use chessfriend_bitboard::BitBoard;
use chessfriend_core::{Color, Direction, Piece, PlacedPiece};
@ -48,16 +48,12 @@ impl MoveGeneratorInternal for ClassicalMoveGenerator {
update_moves_with_ray!(SouthWest, occupied_squares);
update_moves_with_ray!(West, occupied_squares);
let quiet_moves_bb = all_moves & (empty_squares | !friendly_pieces);
let capture_moves_bb = all_moves & opposing_pieces;
let map_to_move = |sq| MoveBuilder::new(*piece, square, sq).build();
let quiet_moves = quiet_moves_bb.occupied_squares().map(map_to_move);
let capture_moves = capture_moves_bb.occupied_squares().map(map_to_move);
let quiet_moves = all_moves & (empty_squares | !friendly_pieces);
let capture_moves = all_moves & opposing_pieces;
MoveSet::new(placed_piece)
.quiet_moves(quiet_moves_bb, quiet_moves)
.capture_moves(capture_moves_bb, capture_moves)
.quiet_moves(quiet_moves)
.capture_moves(capture_moves)
}
}

View file

@ -44,16 +44,12 @@ impl MoveGeneratorInternal for ClassicalMoveGenerator {
update_moves_with_ray!(South, occupied_squares);
update_moves_with_ray!(West, occupied_squares);
let quiet_moves_bb = all_moves & (empty_squares | !friendly_pieces);
let capture_moves_bb = all_moves & opposing_pieces;
let map_to_move = |sq| MoveBuilder::new(*piece, square, sq).build();
let quiet_moves = quiet_moves_bb.occupied_squares().map(map_to_move);
let capture_moves = capture_moves_bb.occupied_squares().map(map_to_move);
let quiet_moves = all_moves & (empty_squares | !friendly_pieces);
let capture_moves = all_moves & opposing_pieces;
MoveSet::new(placed_piece)
.quiet_moves(quiet_moves_bb, quiet_moves)
.capture_moves(capture_moves_bb, capture_moves)
.quiet_moves(quiet_moves)
.capture_moves(capture_moves)
}
}