//! Shogi, the game of Generals const DEFENDING_KING: char = '王'; const CHALLENGER_KING: char = '玉'; const ROOK: char = '飛'; const BISHOP: char = '角'; const GOLD_GENERAL: char = '金'; const SILVER_GENERAL: char = '銀'; const KNIGHT: char = '桂'; const LANCE: char = '香'; const PAWN: char = '歩'; const PROMOTED_ROOK: char = '竜'; const PROMOTED_BISHOP: char = '馬'; const PROMOTED_SILVER_GENERAL: char = '全'; const PROMOTED_KNIGHT: char = '圭'; const PROMOTED_LANCE: char = '仝'; const PROMOTED_PAWN: char = '个'; const DRAGON: char = PROMOTED_ROOK; const HORSE: char = PROMOTED_BISHOP; const TOKIN: char = PROMOTED_PAWN; #[derive(Debug, Copy, Clone, PartialEq, PartialOrd)] #[rustfmt::skip] pub enum BoardPosition { A1, A2, A3, A4, A5, A6, A7, A8, A9, B1, B2, B3, B4, B5, B6, B7, B8, B9, C1, C2, C3, C4, C5, C6, C7, C8, C9, D1, D2, D3, D4, D5, D6, D7, D8, D9, E1, E2, E3, E4, E5, E6, E7, E8, E9, F1, F2, F3, F4, F5, F6, F7, F8, F9, G1, G2, G3, G4, G5, G6, G7, G8, G9, H1, H2, H3, H4, H5, H6, H7, H8, H9, I1, I2, I3, I4, I5, I6, I7, I8, I9, } /// For Shogi this designates the direction the pieces face: /// 'Black #[derive(Debug, Copy, Clone, PartialEq)] pub enum PieceColor { Black, White, } #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub enum PieceType { King, Rook, Bishop, GoldGeneral, SilverGeneral, Knight, Lance, Pawn, } #[derive(Debug, PartialEq)] pub struct Piece { kind: PieceType, color: PieceColor, symbol: char, }