I don't really know what all the attributes are for the cards in this game you're making but it sounds like you have 3 identical decks of cards for 3 players
in any case I would imagine you have some classes
Abstract class called Card that holds
Color of Card
Depth Type enum {Shallow, Reef, Deep}
Then you need 2 other classes LocationCard and DepositCard that extend the card class
LocationCard will probably not need any fields from the looks of it but it will probably have some methods to do whatever it is you do with em
DepositCard however will have an enum for depositSize {NO, SMALL, MEDIUM, LARGE} and whatever methods to do whatever you do with them
Then you need a Decks class that holds 3 List<Card> redList; blueList; yellowList and you can just put a constructor for the deck class that fills the Lists with LocationCards and DepositCards however you see fit according to the rules and give it specific public Card DrawRed(), DrawBlue() DrawYellow() methods
of course I'm assuming that the different colors of cards are for different players if not then you just need 1 list and 1 draw method
It looks like those are the only properties you need though, maybe a couple constants for numbers of specific types of cards or something but all the values shown on the cards you posted can be derrived from this data
edit: if the brown and red cards have different functionality than the bluecard though this whole structure goes out the window
This post was edited by Ideophobe on Mar 10 2017 04:21pm