- Implement
Coords
as unbounded row-col pair and use where appropriate. - Testing for exit fort detection.
- Iterate occupied squares.
- Iterate possible moves for a piece.
- Advanced win conditions (enclosures, repetition rule)
- Ensure everything is documented, including overview of project, what is/is not supported and assumptions.
- Clean up
lib.rs
to expose clean public interface. - Larger boards.
- Review against https://rust-lang.github.io/api-guidelines/.
- Refactor to allow more efficient tree generation.
- BoardState: Current state of the board.
- BoardGeometry: Contains information regarding the immutable physical properties of the board (size, etc).
- GameState: Small struct containing mutable game state that is necessary to evaluate plays/positions.
- GameLogic: Game rules and immutable state. Implements functions for evaluating plays/positions. Does not hold GameState internally, but rather, these functions take an instance of GameState as an argument.
- Implement berserk rule.
- Implement support for other piece types.
- Implement
Ruleset
<-> OpenTafl rule notation. - Implement
Board
<-> OpenTafl board notation. - Implement server/client using OpenTafl protocol.
- CLI client.
- GUI client.
- Implement AI for Brandubh.
- Python interface