#国际象棋 #游戏 #棋盘 #pgn #配置 #随机 #fen

crabchess

简单的国际象棋API

15个版本

0.1.15 2024年4月6日
0.1.14 2024年4月4日
0.1.8 2024年3月29日

#176 in 配置

Download history 23/week @ 2024-04-09 2/week @ 2024-05-21 2/week @ 2024-06-11 95/week @ 2024-07-02 3/week @ 2024-07-23

每月 98 次下载

MIT 协议

365KB
9K SLoC

Rust 7.5K SLoC // 0.0% comments FEN 1K 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