17 个版本 (11 个重大变更)
0.12.2 | 2021 年 12 月 26 日 |
---|---|
0.12.0 | 2021 年 11 月 14 日 |
0.10.0 | 2020 年 11 月 14 日 |
0.9.0 | 2019 年 12 月 30 日 |
0.6.0 | 2017 年 3 月 5 日 |
#553 在 游戏开发 中
用于 usi-run
135KB
3.5K SLoC
shogi-rs
基于位图板的 Rust 将棋库。棋盘表示、移动生成/验证和时间控制工具。
使用方法
用于实现将棋应用程序的库。
shogi
提供了表示将棋概念和规则的各种类型和实现。大多数类型可以通过编程创建,也可以从/转换为 SFEN 格式。有关 UCI 协议规范和 SFEN 格式的更多详细信息,请参阅 USI 协议是什么?。
示例
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());
许可证
shogi-rs
根据 MIT 许可证授权。请阅读此存储库中的 LICENSE 文件以获取更多信息。
依赖关系
~0.7–1.3MB
~27K SLoC