Requirements for Euchre Submission
Must do
- Play a game of bid euchre (below are some likely caveats)
- Correctly handle trump (including LoNo and High No calls)
- Ensure only valid cards are played
- Handle calls to go alone
- Support the choice of at least one human player or an automatic game (all computer players)
- Human player should have trump sorted in a human-understandable way:
- The trump suit should not move to the end of the hand because it’s the “greatest”, but should stay in place. Ex: if Clubs is trump, the order of cards should still be Clubs, Diamonds, Spades, Hearts.
- The bowers should be correctly sorted as the greatest cards within the trump suit
- AI
- Must select a bid (or pass) (can just use a weighted random)
- Must look at their hand to determine what to call when they win their bid
- Must play valid cards
- Human player should have trump sorted in a human-understandable way:
- Offer the choice to play another game at the end of a game
- Be playable from the command line (unless there’s a good reason the specific language shouldn’t be run from the command line)
Optional
- AI that are somewhat intelligent in bid and card selection
- A good card selection algorithm is to play the best card if it will earn you the trick, otherwise play something bad.
- Bid selection is a tricky process
- Multiple AI skills
- Configuration options for more than the two required states
- Variants on the game
- Three-handed (where every player is their own team and is dealt 16 cards)
- Standard (single-deck) euchre
- Six-handed
Extras
Unlike the 99 Bottles of Beer project, there is no reason to have all euchre programs do more or less exactly the same thing. If a particular language makes it easy to do something, adding extras is encouraged. Examples of things to do:
- Add a GUI
- Language good for actual AI? Make a machine-learning computer player.
- Seamless database integration in your favorite language? Add in a database to replay past games.
In particular, if someone feels like making a generic GUI that can handle switching between backends and game variants, that would be a welcome addition. If not, that’s not the important part.