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 2017年3月13日

#15 in 游戏开发

Download history 481/week @ 2024-05-03 582/week @ 2024-05-10 529/week @ 2024-05-17 583/week @ 2024-05-24 608/week @ 2024-05-31 415/week @ 2024-06-07 446/week @ 2024-06-14 602/week @ 2024-06-21 470/week @ 2024-06-28 480/week @ 2024-07-05 510/week @ 2024-07-12 482/week @ 2024-07-19 645/week @ 2024-07-26 602/week @ 2024-08-02 758/week @ 2024-08-09 496/week @ 2024-08-16

2,575 每月下载量
29 个crate中使用 (24 直接)

GPL-3.0+

605KB
9K SLoC

shakmaty

用于棋步生成的Rust库

crates.io docs.rs

特性

  • 生成合法走法

    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文件以获取完整的许可证文本。

依赖关系