Trait shakmaty::Setup[][src]

pub trait Setup {
Show 13 methods fn board(&self) -> &Board;
fn promoted(&self) -> Bitboard;
fn pockets(&self) -> Option<&Material>;
fn turn(&self) -> Color;
fn castling_rights(&self) -> Bitboard;
fn ep_square(&self) -> Option<Square>;
fn remaining_checks(&self) -> Option<&ByColor<RemainingChecks>>;
fn halfmoves(&self) -> u32;
fn fullmoves(&self) -> NonZeroU32; fn us(&self) -> Bitboard { ... }
fn our(&self, role: Role) -> Bitboard { ... }
fn them(&self) -> Bitboard { ... }
fn their(&self, role: Role) -> Bitboard { ... }
}
Expand description

A not necessarily legal position.

Required methods

Piece positions on the board.

Positions of tracked promoted pieces. Used only for Crazyhouse.

Pockets in chess variants like Crazyhouse.

Side to move.

Castling rights in terms of corresponding rook positions.

use shakmaty::{Bitboard, Chess, Setup};

let pos = Chess::default();
let rooks = pos.castling_rights();
// 1 . . . . . . 1
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// 1 . . . . . . 1

assert_eq!(rooks, Bitboard::CORNERS);

En passant target square on the third or sixth rank.

When implemented by a Position, en passant squares are only given if there is a fully legal en passant capture.

Remaining checks in chess variants like Three-Check.

Number of half-moves since the last capture or pawn move.

Examples
use shakmaty::{Chess, Setup};

let pos = Chess::default();
assert_eq!(pos.halfmoves(), 0);

Current move number.

Starts at 1 and is increased after every black move.

Examples
use shakmaty::{Chess, Setup};

let pos = Chess::default();
assert_eq!(pos.fullmoves().get(), 1);

Provided methods

Squares occupied by the side to move.

Examples
use shakmaty::{Bitboard, Chess, Rank, Setup};

let pos = Chess::default();
let mask = pos.us();
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// 1 1 1 1 1 1 1 1
// 1 1 1 1 1 1 1 1

assert_eq!(mask, Bitboard::from(Rank::First) | Bitboard::from(Rank::Second));

Squares occupied by a given piece type of the side to move.

Examples
use shakmaty::{Bitboard, Chess, Role, Setup, Square};

let pos = Chess::default();
let mask = pos.our(Role::Queen);
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . 1 . . . .

assert_eq!(mask, Bitboard::from_square(Square::D1));

Squares occupied by the waiting player.

Examples
use shakmaty::{Bitboard, Chess, Rank, Setup};

let pos = Chess::default();
let mask = pos.them();
// 1 1 1 1 1 1 1 1
// 1 1 1 1 1 1 1 1
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .

assert_eq!(mask, Bitboard::from(Rank::Seventh) | Bitboard::from(Rank::Eighth));

Squares occupied by a given piece type of the waiting player.

Examples
use shakmaty::{Bitboard, Chess, Role, Setup, Square};

let pos = Chess::default();
let mask = pos.their(Role::Queen);
// . . . 1 . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .
// . . . . . . . .

assert_eq!(mask, Bitboard::from_square(Square::D8));

Implementors