AI and simulator for the card game Five Crowns
.gitignore | ||
card_test.go | ||
card.go | ||
format_test.go | ||
format.go | ||
game_test.go | ||
game.go | ||
go.mod | ||
go.sum | ||
main.go | ||
README.md | ||
search_test.go | ||
search.go | ||
strategy.go | ||
util.go |
crowns
AI and simulator for the card game Five Crowns.
Usage
$ /usr/bin/time ./crowns > example.log
132.35user 2.95system 1:21.78elapsed 165%CPU (0avgtext+0avgdata 112348maxresident)k
0inputs+176outputs (0major+1031510minor)pagefaults 0swaps
$ tail -n13 example.log
P2 taking 3★ from the deck
P2 discards 10♠ (position 7)
P3 taking 10♠ from the discard pile
P3 discards 5♦ (position 6)
Found 306698 possible groupings
P0 has [ [[ K♣ 4★ 4♣] [ K♠ 5♠ 5♥] [ 6♣ 7♣ 8♣] [ 6★ Jok K♣ 9★]] leftover [] ] (score: 0)
Found 12716 possible groupings
P1 has [ [[ K♥ 3♥ 3★] [ 5♦ K★ 7♦] [Jok 10♦ J♦] [ 7★ 8★ 9★]] leftover [ 6♥] ] (score: 6)
P2 has [ [[ 3♦ 3★ 3♥] [ 4♠ 4♦ 4★]] leftover [ 9♥ 6♦ 5♠ 5★ 9♦ 7♣ 8♦] ] (score: 49)
P3 has [ [[ K★ 6♦ 6★] [10♥ 10♠ 10★] [ 9♣ Jok J♣ Q♣]] leftover [ 4♣ 4♥ 3♠] ] (score: 11)
The round has ended
Running total scores: [105 102 158 154]
The game has ended
Status
- Find books and runs in hands including wild cards
- Tree search to find best combination with lowest outstanding score
- More optimized tree pruning for very large number of wildcards
- Arbitrary player count
- Unit test coverage
- Pluggable strategy architecture
- Minmax AI strategy
- More advanced strategies
- Take what other players are drawing into account, and avoid discarding them
- Avoid discarding wildcards for other players
- Identify what cards would complete a book or run and their drawing odds
- Oracle / "Cheating" strategy
- Interactive player
- Graphical UI
- Solitaire mode with single deck
- Monte carlo analysis on game properties
- Average number of turns per round
- Odds of the starting player winning