17 releases (11 breaking)
0.12.2 | Dec 26, 2021 |
---|---|
0.12.0 | Nov 14, 2021 |
0.10.0 | Nov 14, 2020 |
0.9.0 | Dec 30, 2019 |
0.6.0 | Mar 5, 2017 |
#532 in Game dev
Used in usi-run
135KB
3.5K
SLoC
shogi-rs
A Bitboard-based shogi library in Rust. Board representation, move generation/validation and time control utilities.
Usage
A library for implementing Shogi application.
shogi
provides a various types and implementations for representing concepts and rules in Shogi.
Most types can be created programatically while they can also be deserialized from / serialized to SFEN format.
See USIプロトコルとは (What is the USI protocol?) for more detail about UCI protocol specification and SFEN format.
Examples
use shogi::{Move, Position};
use shogi::bitboard::Factory as BBFactory;
use shogi::square::consts::*;
BBFactory::init();
let mut pos = Position::new();
// Position can be set from the SFEN formatted string.
pos.set_sfen("lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1").unwrap();
// You can programatically create a Move instance.
let m = Move::Normal{from: SQ_7G, to: SQ_7F, promote: false};
pos.make_move(m).unwrap();
// Move can be created from the SFEN formatted string as well.
let m = Move::from_sfen("7c7d").unwrap();
pos.make_move(m).unwrap();
// Position can be converted back to the SFEN formatted string.
assert_eq!("lnsgkgsnl/1r5b1/ppppppppp/9/9/9/PPPPPPPPP/1B5R1/LNSGKGSNL b - 1 moves 7g7f 7c7d", pos.to_sfen());
License
shogi-rs
is licensed under the MIT license. Please read the LICENSE file in this repository for more information.
Dependencies
~0.7–1.2MB
~27K SLoC