Konig
Oder
koenig? Weiß ich nicht.
A Rust-based chess engine, built to support custom implementations and chess variants. In general, it should be just as easy to implement standard chess, hex chess, or an infinite chess board with the traits and definitions in this crate.
Top-level TODOs for v0.1.0
-
konig::core- The essential traits and definitions for
konig. - Finalise trait definitions.
- Investigate: should the given traits be object-safe?
- This would require removing
std::ops::Indexfrom the supertraits ofcore::board::Board, for example.
- This would require removing
- Complete and review documentation.
- The essential traits and definitions for
-
konig::standard- An implementation of standard chess using
konig::core. - Move validation.
- Move processing.
- Display implementation.
- Significant testing.
- Complete and review documentation.
- An implementation of standard chess using
-
konig::io- Parsing (and streaming?) for common chess formats.
- Implement
konig::io::fen.- Review: should
FenData.as_boardreturn aStandardBoard, or a customBoard? - Finalise the API on
FenData. - Add significant testing from real-world datasets.
- Add and review documentation.
- Review: should
- Implement
konig::io::san.- Create structs and basic API.
- Implement parser with
nom. - Add significant testing from real-world datasets.
- Add and review documentation.
- Implementations for EPD and PGN are blocked until a later time when a
konig::core::game::Gametrait is implemented (likely deferred tov0.2.0)
Usage
TODO, i.e., DON'T USE THIS LIBRARY YET.
It's still very unfinished.