aboutsummaryrefslogtreecommitdiff
path: root/src/board.rs
diff options
context:
space:
mode:
authoreug-vs <eugene@eug-vs.xyz>2023-01-23 05:02:30 +0300
committereug-vs <eugene@eug-vs.xyz>2023-01-23 05:10:48 +0300
commit9a41a379a8a1f33b6a9d28f1d5ff3c1d0826e1f5 (patch)
tree58a7ec5f6bdbc701436c011e82a5b6817483bb1c /src/board.rs
parentc61c22208de60465db7f9cf58cdfa5d204826daf (diff)
downloadchessnost-9a41a379a8a1f33b6a9d28f1d5ff3c1d0826e1f5.tar.gz
refactor: use Square as type everywhere
Diffstat (limited to 'src/board.rs')
-rw-r--r--src/board.rs56
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);