March 22, 2011

撲克牌發牌+判斷牌種 c++

發牌的程式碼:(未完成,只有發牌)

#include  
using namespace std;
/*牌的主鍵:color花色,point數字
print_card():印出牌的花色和數字,set_a_card():設定牌的花色和數字*/
class Card
{
private:
 char color;     
 int point;
public:
  Card();
  void print_card();
  void set_a_card(char, int);
};      
/*設定初始值:花色是梅花'S',數字為0*/
Card::Card()
{
  color='S';
  point=0;
}
/*印出結果花色和數字*/ 
void Card::print_card()
{
  cout << color << point << "\n";
};
/*建構子 : 設定管道用參數c來設定private裡的color
用參數p來設定private裡的point*/ 
void Card::set_a_card(char c, int p)
{
  color = c;
  point = p;
};
/*撲克牌的規格有52張牌,操作方法:
card_initialization()  洗牌 
check_dealed(int)      回傳牌為未知 
get_a_card()           取得一張未知牌
getPoint(int)          取得數字 
getColor(int)          取得花色*/
class Poker_card
{
  private:
    bool is_dealed[52];
  public:
    void card_initialization();
    bool check_dealed(int);
    int get_a_card();
    int getPoint(int);
    char getColor(int);
};
/*設定52張牌 都是0 沒有花色和數字*/ 
void Poker_card::card_initialization()
{
  int i;
  for(i=0;i<52;i++) is_dealed[i] = false;
};          
/*回傳布林數值"0"-->回傳每張牌都是空白*/        
bool Poker_card::check_dealed(int i)
{
  return is_dealed[i];
};
/*rand()亂數%52 ??? --->問小黑
取得一張牌 當結果的值為1 ,i是1-52的亂數 
設定如果上上個涵式check_dealed(i)值不為1,則is_dealed[i]的值為1 回傳i*/ 
int Poker_card::get_a_card()
{
  int i;
  while(1)
  {
    i = rand() % 52;
    if(!check_dealed(i)) 
    {  
       is_dealed[i] = true;
       break;
    }
  } 
  return i;
};
/*取得數字:每個花色有1-13的數字,所以i%13*/ 
int Poker_card::getPoint(int i)
{
    return i % 13 +1;
};
/*取的花色:c1是get_a_card()取得i亂數除以13 
set_a_card()--->color=c; 用c參數成管道設定花色 
黑桃 00-13  所以除以 13為0 設如果c1=0 則c='S'  
愛心 13-26  所以除以 13為1 設如果c1=1 則c='H'
菱形 26-39  所以除以 13為2 設如果c1=1 則c='D'
梅花 39-52  所以除以 13為3 設如果c1=1 則c='C'*/ 
char Poker_card::getColor(int i)
{
    int c1;
    char c;
    c1 = i / 13;
    if(c1 == 0) c = 'S';
    if(c1 == 1) c = 'H';
    if(c1 == 2) c = 'D';
    if(c1 == 3) c = 'C';
    return c;
};

Poker_card pc;
/*Player玩家有name名字Card card_of_hand[5]手上有5張牌
void card_dealing()--->發牌;
void print_hand_of_card()--->;
*/
class Player
{
  private:
    char *name;
    Card card_of_hand[5];
  public:   
    Player(char *);
    void card_dealing();
    void print_hand_of_card();
};
/*建構子 : 設定管道用參數x來設定private裡的name*/ 
Player::Player(char *x)
{
  name = x;
}
/*發牌給五個人 pc.get_a_card(): Poker_card pc.取得一張未知牌為亂數j
    p = pc.getPoint(j) --->會用到亂數j 取得數字 
    c = pc.getColor(j) --->會用到亂數j 取得花色
    參數c,p是上述建構子Card::set_a_card(char c, int p) 
    card_of_hand[i].set_a_card(c,p);手上此張牌.設定一張牌的花色和數字*/ 
void Player::card_dealing()
{
  int i,j,p;
  char c;
  for(i=0;i<5;i++)
  {
    j = pc.get_a_card();
    p = pc.getPoint(j);
    c = pc.getColor(j);
    card_of_hand[i].set_a_card(c,p);
  }
};
/*印出手上的五張牌*/ 
void Player::print_hand_of_card()
{
  int i,j;
  cout << "The cards of " << name << " :\n";
  for(i=0;i<5;i++)
  {
    card_of_hand[i].print_card();   
  }
  cout << "-----------------------\n";
};
/*
1.玩家設定
2.洗牌
3.發牌給每個人
4.印出每個人手上的五張牌*/
int main(void)
{
int i;
Player pp[4]={"cherry","moon","fish","big knife"};

pc.card_initialization();

for(i=0;i<4;i++)
{
pp[i].card_dealing();
pp[i].print_hand_of_card();
}
system("pause");
return 0;
}

0推薦此文章
Today's Visitors: 1 Total Visitors: 308
Personal Category: c語言程式 Topic: learning / education / linguistic
Previous in This Category: c語言程式 加法(迴圈的計算)  
[Trackback URL]

Reply
  • 1樓

    1樓搶頭香

    好強 拍拍手!

  • luckyJFLS at March 23, 2011 12:12 AM comment
  • 2樓

    2樓頸推

    大家好我新開ㄉ遊戲資訊論壇
    歡迎大家有空來逛逛

  • oouqujsbb at April 22, 2011 07:13 AM comment | email Homepage | prosecute
  • 3樓

    3樓坐沙發

    srrt <p>
    加油!加油!<br>
    GAY男同志視訊聊天室<br>
    http://pix.GoGoBoy.TV<p>

    ppwwn <br>

  • at January 14, 2013 01:14 PM comment
  • 4樓

    福樓

    \( ● ⌒ ∇ ⌒ ● )/

  • 計志雄 at May 7, 2013 02:03 AM comment | email Homepage
Post A Comment









Yes No



Please input the magic number:

( Prevent the annoy garbage messages )
( What if you cannot see the numbers? )
Please input the magic number

誰來收藏
Loading ...
unlog_NVPO 0