#pragma once #include #include enum class SuiteT {HEART, SPADE, DIAMOND, CLUB, NONE}; const std::vector SUITE_NAMES{"heart","spade","diamond","club","none"}; const int SUITE_COUNT{static_cast(SuiteT::NONE)}; std::string SuiteTToString(SuiteT suite); SuiteT StringToSuiteT(std::string name); class CardT { public: CardT(SuiteT s = SuiteT::NONE, int v=0); void Random(int maxValue = 9); bool operator ==(const CardT & other) const; int Value() const; SuiteT Suite() const; private: SuiteT suite{SuiteT::DIAMOND}; int value{1}; }; class SquareT { public: void SetCard(CardT c); void Flip(); bool IsFaceUp() const; bool HasCard() const; CardT GetCard() const; void RemoveCard(); private: CardT card; bool cardPresent{false}; bool faceUp{false}; };