Remove the move lists from bishop, knight, queen, and rook move set construction
These are the easy ones.
This commit is contained in:
		
							parent
							
								
									cd3cb82192
								
							
						
					
					
						commit
						5e3ef9d21e
					
				
					 4 changed files with 18 additions and 40 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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!(
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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)
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue