发一道C++面试题给大家做做
现考虑编写一个扑克游戏:只用一付无大小王的扑克,扑克的花色(suit)分为
Spade、Heart、Diamond和Club,每门花色的牌共13张,面值(rank)分别为
2、3、4、5、6、7、8、9、10、Jack、Queen、King和Ace,每张扑克牌应包含
如下信息:唯一的ID号(1-52)、花色、面值、背面图案的编号等。每张扑克牌
的操作有:判断两张扑克牌是相同花色吗? 判断两张扑克牌是相同面值吗?
判断是给指定的花色吗?判断是给指定的面值吗?
请写出扑克牌类Card类的声明和实现代码,要求选取适当形式的数据成员
描述每张扑克牌的信息,同时以成员函数的形式实现指定的操作。
[解决办法]
main函数略
//enum前加上const就可将下面所有的都放入.h中。
const enum SUIT {SPADE=0,HEART,DIAMOND,CLUB};
const enum RANK {TWO=0,THREE,FOUR,FIVE,SIX,SEVEN,EIGHT,NINE,TEN,JACK,QUEEN,KING,ACE};
class Card
{
public:
Card(int id):mID(id),mSuit((id-1)/13),mRank((id-1)%13){}
bool IsSameSuit(const Card& rhs)
{ return ((this==&rhs)?false:mSuit==rhs.mSuit);}
bool IsSameRank(const Card& rhs)
{ return ((this==&rhs)?false:mRank==rhs.mRank); }
bool IsSuit(int suit)
{return mSuit==suit;}
bool IsRank(int rank)
{return mRank==rank;}
private:
static int nBackImg; //背面图案
const int mID;
const int mSuit;
const int mRank;
};