Struct pleco::core::piece_move::BitMove
[−]
[src]
pub struct BitMove { /* fields omitted */ }
Represents a singular move.
A BitMove
consists of 16 bits, all of which to include a source square, destination square,
and special move-flags to differentiate types of moves.
A BitMove
should never be created directly, but rather instigated with a PreMoveInfo
. This is because
the bits are in a special order, and manually creating moves risks creating an invalid move.
Methods
impl BitMove
[src]
pub const FLAG_QUIET: u16
FLAG_QUIET: u16 = 0
pub const FLAG_DOUBLE_PAWN: u16
FLAG_DOUBLE_PAWN: u16 = 1
pub const FLAG_KING_CASTLE: u16
FLAG_KING_CASTLE: u16 = 2
pub const FLAG_QUEEN_CASTLE: u16
FLAG_QUEEN_CASTLE: u16 = 3
pub const FLAG_CAPTURE: u16
FLAG_CAPTURE: u16 = 4
pub const FLAG_EP: u16
FLAG_EP: u16 = 5
pub const ILLEGAL_FLAG_1: u16
ILLEGAL_FLAG_1: u16 = 6
pub const ILLEGAL_FLAG_2: u16
ILLEGAL_FLAG_2: u16 = 7
pub const FLAG_PROMO_N: u16
FLAG_PROMO_N: u16 = 8
pub const FLAG_PROMO_B: u16
FLAG_PROMO_B: u16 = 9
pub const FLAG_PROMO_R: u16
FLAG_PROMO_R: u16 = 10
pub const FLAG_PROMO_Q: u16
FLAG_PROMO_Q: u16 = 11
pub const FLAG_PROMO_CAP_N: u16
FLAG_PROMO_CAP_N: u16 = 12
pub const FLAG_PROMO_CAP_B: u16
FLAG_PROMO_CAP_B: u16 = 13
pub const FLAG_PROMO_CAP_R: u16
FLAG_PROMO_CAP_R: u16 = 14
pub const FLAG_PROMO_CAP_Q: u16
FLAG_PROMO_CAP_Q: u16 = 15
pub const fn new(input: u16) -> BitMove
[src]
Creates a new BitMove from raw bits.
Safety
Using this method cannot guarantee that the move is legal. The input bits must be encoding a legal move, or else there is Undefined Behavior if the resulting BitMove is used.
pub const fn make_quiet(src: SQ, dst: SQ) -> BitMove
[src]
Makes a quiet BitMove
from a source and destination square.
pub const fn make_pawn_push(src: SQ, dst: SQ) -> BitMove
[src]
Makes a pawn-push BitMove
from a source and destination square.
pub const fn make_capture(src: SQ, dst: SQ) -> BitMove
[src]
Makes a non-enpassant capturing BitMove
from a source and destination square.
pub const fn make_ep_capture(src: SQ, dst: SQ) -> BitMove
[src]
Makes an enpassant BitMove
from a source and destination square.
pub const fn make(flag_bits: u16, src: SQ, dst: SQ) -> BitMove
[src]
Creates a BitMove
from a source and destination square, as well as the current
flag.
pub fn init(info: PreMoveInfo) -> BitMove
[src]
Creates a BitMove from a PreMoveInfo
.
pub const fn null() -> Self
[src]
Creates a Null Move.
Safety
A Null move is never a valid move to play. Using a Null move should onl be used for search and evaluation purposes.
pub const fn is_null(&self) -> bool
[src]
Returns if a BitMove
is a Null Move.
See BitMove::null()
for more information on Null moves.
pub const fn is_capture(&self) -> bool
[src]
Returns if a BitMove
captures an opponent's piece.
pub const fn is_quiet_move(&self) -> bool
[src]
Returns if a BitMove
is a Quiet Move, meaning it is not any of the following: a capture, promotion, castle, or double pawn push.
pub const fn is_promo(&self) -> bool
[src]
Returns if a BitMove
is a promotion.
pub const fn get_dest(&self) -> SQ
[src]
Returns the destination of a BitMove
.
pub const fn get_dest_u8(&self) -> u8
[src]
Returns the destination of a BitMove
.
pub const fn get_src(&self) -> SQ
[src]
Returns the source square of a BitMove
.
pub const fn get_src_u8(&self) -> u8
[src]
Returns the source square of a BitMove
.
pub const fn is_castle(&self) -> bool
[src]
Returns if a BitMove
is a castle.
pub const fn is_king_castle(&self) -> bool
[src]
Returns if a BitMove
is a Castle && it is a KingSide Castle.
pub const fn is_queen_castle(&self) -> bool
[src]
Returns if a BitMove
is a Castle && it is a QueenSide Castle.
pub const fn is_en_passant(&self) -> bool
[src]
Returns if a BitMove
is an enpassant capture.
pub fn is_double_push(&self) -> (bool, u8)
[src]
Returns if a BitMove
is a double push, and if so returns the Destination square as well.
pub fn dest_row(&self) -> Rank
[src]
Returns the Rank
(otherwise known as row) that the destination square of a BitMove
lies on.
pub fn dest_col(&self) -> File
[src]
Returns the File
(otherwise known as column) that the destination square of a BitMove
lies on.
pub fn src_row(&self) -> Rank
[src]
Returns the Rank
(otherwise known as row) that the from-square of a BitMove
lies on.
pub fn src_col(&self) -> File
[src]
Returns the File
(otherwise known as column) that the from-square of a BitMove
lies on.
pub fn promo_piece(&self) -> PieceType
[src]
Returns the Promotion Piece of a BitMove.
Safety
Method should only be used if the BitMove is a promotion. Otherwise, Undefined Behavior may result.
pub fn move_type(&self) -> MoveType
[src]
Returns the MoveType
of a BitMove
.
pub fn stringify(&self) -> String
[src]
Returns a String representation of a BitMove
.
Format goes "Source Square, Destination Square, (Promo Piece)". Moving a Queen from A1 to B8 will stringify to "a1b8". If there is a pawn promotion involved, the piece promoted to will be appended to the end of the string, alike "a7a8q" in the case of a queen promotion.
pub const fn get_raw(&self) -> u16
[src]
Returns the raw number representation of the move.
pub fn incorrect_flag(&self) -> bool
[src]
Returns if the move has an incorrect flag inside, and therefore is invalid.
pub const fn flag(&self) -> u16
[src]
Trait Implementations
impl Copy for BitMove
[src]
impl Clone for BitMove
[src]
fn clone(&self) -> BitMove
[src]
Returns a copy of the value. Read more
fn clone_from(&mut self, source: &Self)
1.0.0[src]
Performs copy-assignment from source
. Read more
impl PartialEq for BitMove
[src]
fn eq(&self, __arg_0: &BitMove) -> bool
[src]
This method tests for self
and other
values to be equal, and is used by ==
. Read more
fn ne(&self, __arg_0: &BitMove) -> bool
[src]
This method tests for !=
.
impl Eq for BitMove
[src]
impl Debug for BitMove
[src]
fn fmt(&self, __arg_0: &mut Formatter) -> Result
[src]
Formats the value using the given formatter. Read more
impl Display for BitMove
[src]
fn fmt(&self, f: &mut Formatter) -> Result
[src]
Formats the value using the given formatter. Read more
impl FromIterator<BitMove> for MoveList
[src]
fn from_iter<T: IntoIterator<Item = BitMove>>(iter: T) -> Self
[src]
Creates a value from an iterator. Read more
impl FromIterator<BitMove> for ScoringMoveList
[src]
fn from_iter<T: IntoIterator<Item = BitMove>>(iter: T) -> Self
[src]
Creates a value from an iterator. Read more