This is a personal project not intended to make money. This is based on the game Lost Cities. https://boardgamegeek.com/boardgame/50/lost-cities
Just putting this here, for now.
The board:
+-----------+-----------+-----------+-----------+-----------+
| Opponent's score: 12 |
+-----------+-----------+-----------+-----------+-----------+
| | | | | |
| +-----+ | | | | |
| | 5 | | | | | |
| +-----+ | | | | |
| | 4 | | | | | |
| +-----+ | | | | |
| | 3 | | | | | |
| +-----+ | | | | +-----+ |
| | wgr | | | | | | 10 | |
| +-----+ | | | | +-----+ |
| | wgr | | | | | | 9 | |
| | Red | | | | | | Ylw | |
| +-----+ | | | | +-----+ |
+-----------+-----------+-----------+-----------+-----------+
| Red | Green | White | Blue | Yellow |
| | | | | |
| +-----+ | +-----+ | +-----+ | +-----+ | +-----+ |
| | 8 | | | | | | | | | | | | | |
| | Red | | | | | | | | | | | | | |
| +-----+ | +-----+ | +-----+ | +-----+ | +-----+ |
| 3 in pile | | | | |
| | | | | |
| Red | Green | White | Blue | Yellow |
+-----------+-----------+-----------+-----------+-----------+
| +-----+ | +-----+ | | | |
| | 8 | | | wgr | | | | |
| | Red | | +-----+ | | | |
| +-----+ | | 3 | | | | |
| | +-----+ | | | |
| | | 4 | | | | |
| | +-----+ | | | |
| | | 5 | | | | |
| | | Red | | | | |
| | +-----+ | | | |
| | | | | |
+-----------+-----------+-----------+-----------+-----------+
| Your score: -30 |
+-----------+-----------+-----------+-----------+-----------+
Main draw pile: 42 cards remaining
Your hand:
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
| 8 | | 8 | | 8 | | 8 | | 10 | | wgr | | wgr | | wgr |
| Red | | Grn | | Wht | | Blu | | Ylw | | Red | | Red | | Red |
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
Backend
- Implement backend with file storage
- Figure out nio task model for backend
- See if it's easily possible to separate storage types from API types
- Implement match browsing
- Implement match history
Frontend
- Implement FE as "screens" where each screen is a loop with re-drawing.
- Improve card selection (not number based)
- Add duplicate rule checks on the FE
- Improve board drawer
General
- Figure out best way to model error propagation to top level.
- Figure out how to make sub-crates tests run during top-level cargo build
- Add automated test of a game
- Test coverage?
- Implement basics to start a game
- Implement main.rs CLI i/o
- Implement "dumb" storage
- Integrate API into storage
- GetState for viewing player
- Fully implement GetGameState API
- Add rules engine
- Rules: updating based on a turn
- Implement main.rs user turn selection I/O
- Rules: scoring
- Implement main.rs board drawer
- Rules: handle end game
- Split game into separate backend and frontend processes.
- Delete 'api' crate and refactor client/server GameApi usage.
- Implement main.rs state machine (turns, end game)
- Sort card in hand in UI
- Review turn before executing
- Split frontend into multiple FE processes; one-per-player.