// // CardLib - Card class // // Freeware // Copyright J Brown 2001 // #ifndef _CARD_INCLUDED #define _CARD_INCLUDED enum eSuit { Clubs = 0, Diamonds = 1, Hearts = 2, Spades = 3 }; enum eValue { Ace = 1, Two = 2, Three = 3, Four = 4, Five = 5, Six = 6, Seven = 7, Eight = 8, Nine = 9, Ten = 10, Jack = 11, Queen = 12, King = 13 }; inline int MAKE_CARD(int Value, int Suit) { if(Value < 1) Value = 1; if(Value == 14) Value = 1; if(Value > 13) Value = 13; if(Suit < 0) Suit = 0; if(Suit > 3) Suit = 3; return ((Value - 1) * 4 + Suit); } class Card { friend class CardStack; public: Card() { nValue = 0; //ace of spades by default fFaceUp = true; } Card(int value, int suit) //specify a face value [1-13] and suit [0-3] { nValue = MAKE_CARD(value, suit); fFaceUp = true; } Card(int index) //specify a 0-51 index { if(index < 0) index = 0; if(index > 51) index = 51; nValue = index; fFaceUp = true; } int Suit() const { return (nValue % 4); } int LoVal() const { return (nValue / 4) + 1; } int HiVal() const { return ((nValue < 4) ? 14 : (nValue / 4) + 1); } int Idx() const //unique value (0-51 etc) { return nValue; } bool FaceUp() const { return fFaceUp; } bool FaceDown() const { return !fFaceUp; } void SetFaceUp(bool fTrue) { fFaceUp = fTrue; } bool IsBlack() const { return Suit() == 0 || Suit() == 3; } bool IsRed() const { return !IsBlack(); } private: int nValue; bool fFaceUp; }; #endif /* _CARD_INCLUDED */