diff options
author | eug-vs <eugene@eug-vs.xyz> | 2023-01-23 05:02:30 +0300 |
---|---|---|
committer | eug-vs <eugene@eug-vs.xyz> | 2023-01-23 05:10:48 +0300 |
commit | 9a41a379a8a1f33b6a9d28f1d5ff3c1d0826e1f5 (patch) | |
tree | 58a7ec5f6bdbc701436c011e82a5b6817483bb1c /src/board.rs | |
parent | c61c22208de60465db7f9cf58cdfa5d204826daf (diff) | |
download | chessnost-9a41a379a8a1f33b6a9d28f1d5ff3c1d0826e1f5.tar.gz |
refactor: use Square as type everywhere
Diffstat (limited to 'src/board.rs')
-rw-r--r-- | src/board.rs | 56 |
1 files changed, 21 insertions, 35 deletions
diff --git a/src/board.rs b/src/board.rs index 2047483..9df26fe 100644 --- a/src/board.rs +++ b/src/board.rs @@ -145,44 +145,44 @@ impl Board { for (piece_type, piece) in self.pieces_by_color(color).iter().enumerate() { match PieceType::from(piece_type) { PieceType::Pawn => { - for from in serialize_bitboard(*piece) { - for to in serialize_bitboard(self.attacks.pawn_pushes[color as usize][from as usize] & available_targets) { - moves.push(Move { from, to }); + for source in serialize_bitboard(*piece) { + for target in serialize_bitboard(self.attacks.pawn_pushes[color as usize][source as usize] & available_targets) { + moves.push(Move { source, target }); }; } } PieceType::King => { - for from in serialize_bitboard(*piece) { - for to in serialize_bitboard(self.attacks.king[from as usize] & available_targets) { - moves.push(Move { from, to }); + for source in serialize_bitboard(*piece) { + for target in serialize_bitboard(self.attacks.king[source as usize] & available_targets) { + moves.push(Move { source, target }); }; } } PieceType::Knight => { - for from in serialize_bitboard(*piece) { - for to in serialize_bitboard(self.attacks.knight[from as usize] & available_targets) { - moves.push(Move { from, to }); + for source in serialize_bitboard(*piece) { + for target in serialize_bitboard(self.attacks.knight[source as usize] & available_targets) { + moves.push(Move { source, target }); }; } } PieceType::Bishop => { - for from in serialize_bitboard(*piece) { - for to in serialize_bitboard(self.attacks.bishop(self.occupancy, from) & available_targets) { - moves.push(Move { from, to }); + for source in serialize_bitboard(*piece) { + for target in serialize_bitboard(self.attacks.bishop(self.occupancy, source) & available_targets) { + moves.push(Move { source, target }); }; } } PieceType::Rook => { - for from in serialize_bitboard(*piece) { - for to in serialize_bitboard(self.attacks.rook(self.occupancy, from) & available_targets) { - moves.push(Move { from, to }); + for source in serialize_bitboard(*piece) { + for target in serialize_bitboard(self.attacks.rook(self.occupancy, source) & available_targets) { + moves.push(Move { source, target }); }; } } PieceType::Queen => { - for from in serialize_bitboard(*piece) { - for to in serialize_bitboard(self.attacks.queen(self.occupancy, from) & available_targets) { - moves.push(Move { from, to }); + for source in serialize_bitboard(*piece) { + for target in serialize_bitboard(self.attacks.queen(self.occupancy, source) & available_targets) { + moves.push(Move { source, target }); }; } } @@ -202,24 +202,10 @@ pub enum Color { Black, } -/// Aliases to board square indexes -#[allow(dead_code)] -#[derive(Debug)] -pub enum Square { - A1, B1, C1, D1, E1, F1, G1, H1, - A2, B2, C2, D2, E2, F2, G2, H2, - A3, B3, C3, D3, E3, F3, G3, H3, - A4, B4, C4, D4, E4, F4, G4, H4, - A5, B5, C5, D5, E5, F5, G5, H5, - A6, B6, C6, D6, E6, F6, G6, H6, - A7, B7, C7, D7, E7, F7, G7, H7, - A8, B8, C8, D8, E8, F8, G8, H8, -} - #[cfg(test)] mod tests { use super::*; - use crate::bitboard::{pop_count, bitscan, print}; + use crate::{bitboard::{pop_count, bitscan, print}, square::Square}; const DEFAULT_FEN: &str = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1"; @@ -252,8 +238,8 @@ mod tests { assert_eq!(pop_count(board.pieces[PieceType::QueenBlack as usize]), 1); assert_eq!(pop_count(board.pieces[PieceType::KingBlack as usize]), 1); - assert_eq!(bitscan(board.pieces[PieceType::King as usize]), Square::E1 as u8); - assert_eq!(bitscan(board.pieces[PieceType::QueenBlack as usize]), Square::D8 as u8); + assert_eq!(bitscan(board.pieces[PieceType::King as usize]), Square::E1); + assert_eq!(bitscan(board.pieces[PieceType::QueenBlack as usize]), Square::D8); assert_eq!(pop_count(board.occupancy), 32); assert_eq!(pop_count(board.empty()), 32); |