Card 类

来源:互联网 发布:java读取图片输出前台 编辑:程序博客网 时间:2024/04/29 19:09

#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

原创粉丝点击