#move #sfen #usi

shogi

基于位图板的将棋库。棋盘表示、移动处理以及各种时间控制工具。

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

MIT 许可证

135KB
3.5K SLoC

shogi-rs

Github Actions Coverage Status crates.io docs.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