use bitboard::Bitboard; use movegen::*; pub struct Game { pub pieces: [Bitboard; 12], en_passant: u8, } impl Default for Game { fn default () -> Game { Game { pieces: [0; 12], en_passant: 0, } } } impl Game { pub fn bitboard(&self, pt: PieceType, side: Side) -> Bitboard { if side == BLACK { self.pieces[(pt + 6) as usize] } else { self.pieces[pt as usize] } } pub fn pawns(&self, side: Side) -> Bitboard { match side { WHITE => self.pieces[0], BLACK => self.pieces[6], } } pub fn knights(&self, side: Side) -> Bitboard { match side { WHITE => self.pieces[1], BLACK => self.pieces[7], } } pub fn bishops(&self, side: Side) -> Bitboard { match side { WHITE => self.pieces[2], BLACK => self.pieces[8], } } pub fn rooks(&self, side: Side) -> Bitboard { match side { WHITE => self.pieces[3], BLACK => self.pieces[9], } } pub fn queens(&self, side: Side) -> Bitboard { match side { WHITE => self.pieces[4], BLACK => self.pieces[10], } } pub fn kings(&self, side: Side) -> Bitboard { match side { WHITE => self.pieces[5], BLACK => self.pieces[11], } } pub fn get_all_side(&self, side: Side) -> Bitboard { match side { WHITE => self.pieces[0] | self.pieces[1] | self.pieces[2] | self.pieces[3] | self.pieces[4] | self.pieces[5], BLACK => self.pieces[6] | self.pieces[7] | self.pieces[8] | self.pieces[9] | self.pieces[10] | self.pieces[11] } } } pub fn search() { }