#ifndef _CARD_H
#define _CARD_H
#define TypeValue short
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
class Card
{
private:
char Face ;
char Value ;
char Suit ;
public:
Card();//构造函数,默认牌为空牌
void ShowCard() ;//输出牌面及花色
void ClearCard() ;//清空一张牌
void Swap( Card& a) ;//和另一张牌交换
int GetValue() const ;//获得牌值
char GetSuit() const ;//获得花色
Card& operator = ( const Card& a ) ;//重载赋值运算符
Card& SetCard( int value , char suit ) ;//设置为一张指定的牌
bool IsClear() const;//判断一张牌是否为空
const bool operator > ( const Card& a ) ;//重载 >号 比较两张牌的大小
const bool operator < ( const Card& a ) ;//重载 <号 比较两张牌的大小
const bool operator == ( const Card& a ) ;//重载 ==号 判断两张牌是否相等
const bool operator != ( const Card& a ) ;//重载 !=号 判断两张牌是否相等
};
Card::Card()
{
Value = 0 ;
Suit = ' ' ;
Face =' ';
}
void Card::ClearCard()
{ Card() ; }//调用构造函数清空一张牌
void Card::ShowCard()
{
if( Face == '1' ) cout << Face << '0' << Suit ;
else cout << Face << Suit;
}
void Card::Swap( Card& a )
{
Card T = *this ;
*this = a;
a = T ;
}
char Card::GetSuit() const
{ return Suit ; }
int Card::GetValue() const
{ return Value ; }
Card& Card::operator = ( const Card& a )
{
Value = a.Value ;
Suit = a.Suit ;
Face = a.Face ;
return *this ;
}
Card& Card::SetCard( int value , char suit )
{
switch(value)
{
case 1: Face='2', Value = 1 ; break ;
case 2: Face='3', Value = 2 ; break ;
case 3: Face='4', Value = 3 ; break ;
case 4: Face='5', Value = 4 ; break ;
case 5: Face='6', Value = 5 ; break ;
case 6: Face='7', Value = 6 ; break ;
case 7: Face='8', Value = 7 ; break ;
case 8: Face='9', Value = 8 ; break ;
case 9: Face='1', Value = 9 ; break ;
case 10: Face='J', Value = 10 ; break ;
case 11: Face='Q', Value = 11 ; break ;
case 12: Face='K', Value = 12 ; break ;
case 13: Face='A', Value = 13 ; break ;
default: break ;
}
switch(suit)
{
case 0: Suit = 3 ; break;
case 1: Suit = 4 ; break;
case 2: Suit = 5 ; break;
case 3: Suit = 6 ; break;
default: break;
}
return *this;
}
bool Card::IsClear() const
{ return ( Value == 0 && Suit == ' ' && Face == ' ' ) ; }
const bool Card::operator > (const Card &a)
{ return Value > a.Value ; }
const bool Card::operator < (const Card &a)
{ return Value < a.Value ; }
const bool Card::operator == (const Card &a)
{ return ( Value == a.Value && Suit == a.Suit ) ; }
const bool Card::operator !=(const Card &a)
{ return !( Value == a.Value && Suit == a.Suit ) ; }
#endif