75次发布
0.27.1 | 2024年7月11日 |
---|---|
0.26.0 | 2023年6月10日 |
0.23.1 | 2023年2月19日 |
0.23.0 | 2022年12月4日 |
0.0.1 |
|
#15 in 游戏开发
2,575 每月下载量
在 29 个crate中使用 (24 直接)
605KB
9K SLoC
shakmaty
用于棋步生成的Rust库
特性
-
生成合法走法
use shakmaty::{Chess, Position}; let pos = Chess::default(); let legals = pos.legal_moves(); assert_eq!(legals.len(), 20);
-
播放走法
use shakmaty::{Square, Move, Role}; // 1. e4 let pos = pos.play(&Move::Normal { role: Role::Pawn, from: Square::E2, to: Square::E4, capture: None, promotion: None, })?;
-
检测游戏结束条件:
pos.is_checkmate()
,pos.is_stalemate()
,pos.is_insufficient_material()
,pos.outcome()
。 -
读取和写入FEN,SAN和UCI记谱。
-
支持所有Lichess变体:标准国际象棋、Chess960、反国际象棋、原子、国王高地、三重将死、疯狂棋局、竞速国王和部落。提供词汇来实施其他变体。
-
位板和紧凑的固定位移魔法攻击表。
-
Zobrist散列位置。
-
使用shakmaty-syzygy探测Syzygy表基。
文档
基准测试
初始位置的简单perft。无哈希表。i7-6850K CPU @ 3.60GHz。
perft | 4 | 5 |
---|---|---|
shakmaty 0.16.0 | 1.0 毫秒 | 24.1 毫秒 |
jordanbray/chess 3.1.1 | 0.8 毫秒 | 18.6 毫秒 |
Stockfish 8 (x86-64-bmi2) | 4 毫秒 | 33 毫秒 |
应注意,Stockfish并非针对perft速度优化,并且还维护了额外的评估数据结构。Stockfish的新版本对此更加不重视。
许可证
Shakmaty根据GPL-3.0 (或您选择的任何后续版本) 许可。请参阅COPYING文件以获取完整的许可证文本。