15个版本
0.1.15 | 2024年4月6日 |
---|---|
0.1.14 | 2024年4月4日 |
0.1.8 | 2024年3月29日 |
#176 in 配置
每月 98 次下载
365KB
9K SLoC
♔♕♖♗♘♙ crabchess
crabchess
是一个100% Rust国际象棋API,没有不安全
代码,允许您构建与国际象棋相关的软件工具。crabchess
可以导入和导出PGN(可移植游戏表示法)和FEN(Forsyth-Edwards表示法),确定棋局的状态,识别非法移动尝试,确定棋局的ECO开局,追踪玩家剩余时间,等等。crabchess
不仅与标准国际象棋兼容,还与随机棋盘配置(如Fischer随机棋)兼容。
文档
完整文档可在docs.rs找到。
示例
大部分核心功能都通过ChessPosition
结构体暴露,它表示一局棋。随着棋局的进行,可以修改和查询ChessPosition
结构体。
use crabchess::prelude::*;
// Create board with default (Staunton) starting position.
let mut position = ChessPosition::new();
// Apply moves in SAN format.
position
.apply_sans("e4 e6 Nf3 g6 d4 Bg7 e5 Ne7 g4".split(' '))
.unwrap();
// Or, use the `Move` enum.
position
.apply_move(Move::Castle {
side: Side::Kingside,
color: Color::Black,
timer_update: None,
})
.unwrap();
assert_eq!(
position.fen(),
"rnbq1rk1/ppppnpbp/4p1p1/4P3/3P2P1/5N2/PPP2P1P/RNBQKB1R w KQ - 1 6"
);
position
.apply_move(Move::Standard {
initial_square: sq!(F3),
piece_type: Type::Knight,
piece_color: Color::White,
final_square: sq!(G5),
is_capture: false,
timer_update: None,
})
.unwrap();
许可证
本项目采用MIT许可证 - 有关详细信息,请参阅LICENSE文件。
依赖项
~4–12MB
~137K SLoC