I'm currently prototyping a Java version of a fun little card game called Space Beans. It's for my own practice, not distribution, this isn't a question of legality.
Space Beans has 105 cards, which can be in quite a few different places (draw, discard, hand, trophy cases and score piles). How would you go about making sure that a card never gets lost during play? I initially thought of using decks and passing the values around, then considered a global array of cards with the cards containing their location. However with Trophy Cases being able to have two states and the number of players varying between 2 and 6, the enums involved started to look un-weildly.