Python implentation of the popular bluffing card game, Coup.
For a description of the rules, click here.
Player Descriptions:
- Random
- all logic functions make completely random choices
- uses random_dispose, random_keep
- Truth Teller
- only chooses moves that never bluff based on its own cards
- uses random_dispose, random_keep
- User
- chooses moves based on user input to the terminal
- Income
- always takes income or assinates/coups whenever possible
- uses random_dispose, random_keep
- Neural Network
- utilizes Q-learning with a neural network to learn the best decision_fn
- uses income_block, random_dispose, random_keep
Running the program:
- Create player objects using the various FUNCS from player.py
- Put all players into the players list and create the game object.
- Run python3 game.py
Model Files Format: "{number of players}-{number of episodes trained on}-{types of opponents}"
Missing Features / Bugs:
- Blocking the 'Steal' action is ambiguous, and doesn't force the player to specifically claim 'Captain' or 'Ambassador'
- Winning a challenge does not cause the player to reshuffle their card back into the deck
- There is no implementation for a GUI yet
- RL agents are only trained to be the first player, need to fix cases when they aren't first