Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

c++的class設定撲克牌

1 view
Skip to first unread message

Ansun

unread,
May 11, 2001, 1:26:20 AM5/11/01
to
請教各位
本人第一次接觸物件,不知道我的構想對不對
class 撲克牌{
public:
撲克牌()
洗牌()
發牌()
檢查已發的牌()

private:
黑桃[13];
紅心[13];
方塊[13];
梅花[13];};
這樣子對嗎??
找了很多網站……還是不曉得對不對
正確的設定應該為何呢?
洗牌的部份,是不是用一個二維陣列,使用rand去存?
發牌再用另一個陣列存?
請各位不吝指導…
初學物件…花了三天才寫出一個車子可行走、加油的程式…
這個撲克牌可真讓我想破頭…先謝謝各位

--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>

新鮮人

unread,
May 11, 2001, 11:36:33 PM5/11/01
to
※ 引述《Ansu...@bbs.cis.nctu.edu.tw (Ansun)》之銘言:

> 請教各位
> 本人第一次接觸物件,不知道我的構想對不對
> class 撲克牌{
> public:
> 撲克牌()
> 洗牌()
> 發牌()
> 檢查已發的牌()
> private:
> 黑桃[13];
> 紅心[13];
> 方塊[13];
> 梅花[13];};
> 這樣子對嗎??

你這樣寫應該是有點問題,我覺得應該先建立"一張撲克牌",接著再利用陣列
把52張牌建成"一副樸克牌"才對!
class 一張撲克牌{
private:
int 花色;
int 大小;
boolean 是否翻面;
…等等其他單張牌的性質
public:
劃出該張牌();
…等等其他相關member function.
}

在撲克牌的例子裡,"一張撲克牌"是最基本的單位,你一定要寫一個Class來讓他能
處理他自己的事情,如翻面,自行劃出該牌…等事情。而"一副撲克牌"所要做的則
是將52張"一牌撲克牌"組合起來,並且加上"一副撲克牌"所應處理的動作,如洗牌、
發牌…等等。
小小意見,提供參考。
--
Ξ Origin: 中興大學天樞資訊網 <b...@bbs.nchu.edu.tw> [FROM: c171.h210244170]

BKW

unread,
May 12, 2001, 6:14:11 AM5/12/01
to
"新鮮人" 寫道:

我用VB6.0設計了一個大老二程式 可以玩哦

執行檔賣你200元 原始程式碼賣你2000元如何!

有興趣請來信

Ansun

unread,
May 12, 2001, 4:42:25 PM5/12/01
to
VB.......我會
但我現在是要學c++的"物件導向"
我是想問觀念的問題,要自已寫
並不是來這"要程式"的
感謝您的好意
==> 在 BKW <b...@ms7.hinet.net> 的文章中提到:

> "新鮮人" 寫道:
> 我用VB6.0設計了一個大老二程式 可以玩哦
> 執行檔賣你200元 原始程式碼賣你2000元如何!
> 有興趣請來信
> > 你這樣寫應該是有點問題,我覺得應該先建立"一張撲克牌",接著再利用陣列
> > 把52張牌建成"一副樸克牌"才對!
> > class 一張撲克牌{
> > private:
> > int 花色;
> > int 大小;
> > boolean 是否翻面;
> > …等等其他單張牌的性質
> > public:
> > 劃出該張牌();
> > …等等其他相關member function.
> > }
> > 在撲克牌的例子裡,"一張撲克牌"是最基本的單位,你一定要寫一個Class來讓他能
> > 處理他自己的事情,如翻面,自行劃出該牌…等事情。而"一副撲克牌"所要做的則
> > 是將52張"一牌撲克牌"組合起來,並且加上"一副撲克牌"所應處理的動作,如洗牌、
> > 發牌…等等。
> > 小小意見,提供參考。
> > --
> > Ξ Origin: 中興大學天樞資訊網 <b...@bbs.nchu.edu.tw> [FROM: c171.h210244170]

附野閒人

unread,
May 17, 2001, 2:40:21 PM5/17/01
to
==> Ansu...@bbs.cis.nctu.edu.tw (Ansun) 提到:
: VB.......我會
: 但我現在是要學c++的"物件導向"
: 我是想問觀念的問題,要自已寫
了不起,這句話我喜歡。

關於撲克牌的事,首先,一副撲克牌共有52張牌(外加兩張鬼牌),通常的情
形是每一種花色的牌各有一張(獨立而且唯一),所以你必須有函式來處理持
牌的情形,因此把一副牌當成一個物件來處理可能會是比較好的原則。

另外,因為牌本身可以移動,所以你必須設定單張牌的各項參數,這可以用
struct或是class來達成牌的屬性,例如:

class myCard{
花色;
點數;
}

接下來就是處理單張牌的移動問題,就我來說,我把持牌者當成另一種物件
,玩牌的遊戲其實就是在不同的持牌者之中傳遞牌的動作,你可以把放在桌
面上的牌當成另一個持排者。
class myCardHolder{
public:
myCard *ChangeCard(); //換牌
GetCard(myCard*); //抽牌
private: //別讓人偷看
myCard m_Card();
}

//整副牌的物件
class myCardStack{
public:
myCardStack(); //產生牌組
GeneratedCard(); //洗牌
PushCard(myCard*);
myCard *PopCard();
private:
myCard m_Card[52];
}

透過以上的物件,你可以把玩牌的動作變成,洗牌,發牌(持排者向牌堆拿牌)
,持牌者之間換牌的動作,接下來就是實作每一個動作,以及針對遊戲所定的
換牌規則。

希望對你有所助益。

--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)
◎[ [1;33;46mliubi [0m]From: 4.z12.mypili.net

0 new messages