Compare commits

...

9 Commits

Author SHA1 Message Date
Varga Dávid Lajos
db333a693f added method uci_notation to struct BitMove 2025-11-18 17:38:48 +01:00
Varga Dávid Lajos
fd0d26486b switched from public fields to getters for struct BitMove 2025-11-18 17:30:04 +01:00
Varga Dávid Lajos
e1f4ae717e added constructor for castling moves in bitboard::bitmove.rs 2025-11-18 17:24:11 +01:00
Varga Dávid Lajos
7b9c1edbab added constructor for capture moves in bitboard::bitmove.rs 2025-11-18 17:23:07 +01:00
Varga Dávid Lajos
05294a7736 changed name of value of enum BitMoveType to align with Rust naming conventions 2025-11-18 17:20:40 +01:00
Varga Dávid Lajos
d8da808580 added enum BitMoveType to bitboard::bitmove.rs for readability 2025-11-18 17:19:31 +01:00
Varga Dávid Lajos
c420d8b3dd added constructor for quiet moves in bitboard::bitmove.rs 2025-11-18 17:17:11 +01:00
Varga Dávid Lajos
57af3aaae3 defined shape of struct bitboard::bitmove::BitMove 2025-11-18 17:09:39 +01:00
Varga Dávid Lajos
887b9abed8 adde file and module structure for bitboard::bitmove.rs 2025-11-18 17:02:07 +01:00
3 changed files with 83 additions and 0 deletions

View File

@@ -3,5 +3,6 @@ mod utils;
mod legality;
mod checkinfo;
mod attacks;
mod bitmove;
pub mod board;

View File

@@ -0,0 +1,77 @@
use super::utils::*;
#[derive(Copy, Clone, PartialEq, Eq)]
pub struct BitMove {
move_type: BitMoveType,
from_square: u8,
to_square: u8,
promotion_piece: Option<u8>
}
impl BitMove {
#[inline]
pub fn quiet(from: u8, to: u8, promotion_piece: Option<u8>) -> Self {
return Self {
move_type: BitMoveType::Quiet,
from_square: from,
to_square: to,
promotion_piece: promotion_piece
};
}
#[inline]
pub fn capture(from: u8, to: u8, promotion_piece: Option<u8>) -> Self {
return Self {
move_type: BitMoveType::Capture,
from_square: from,
to_square: to,
promotion_piece: promotion_piece
};
}
#[inline]
pub fn castle(from: u8, to: u8) -> Self {
return Self {
move_type: BitMoveType::Castle,
from_square: from,
to_square: to,
promotion_piece: None
};
}
#[inline(always)]
pub fn move_type(&self) -> BitMoveType {
return self.move_type;
}
#[inline(always)]
pub fn from_square(&self) -> u8 {
return self.from_square;
}
#[inline(always)]
pub fn to_square(&self) -> u8 {
return self.to_square;
}
#[inline(always)]
pub fn promotion_piece(&self) -> Option<u8> {
return self.promotion_piece;
}
pub fn uci_notation(&self) -> String {
let mut notation = notation_from_square_number(self.from_square());
notation.push_str(&notation_from_square_number(self.to_square()));
if let Some(promotion_piece) = self.promotion_piece {
notation.push(get_character_by_piece_id(promotion_piece).to_ascii_lowercase());
}
return notation;
}
}
#[derive(Copy, Clone, PartialEq, Eq)]
pub enum BitMoveType {
Quiet,
Capture,
Castle,
EnPassant
}

View File

@@ -48,6 +48,11 @@ pub fn try_get_square_number_from_notation(notation: &str) -> Result<u8, ()> {
}
}
const PIECE_CHARACTERS: [char; 12] = ['P', 'N', 'B', 'R', 'Q', 'K', 'p', 'n', 'b', 'r', 'q', 'k'];
pub fn get_character_by_piece_id(id: u8) -> char {
return PIECE_CHARACTERS[id as usize];
}
// <----- TESTS ----->