我有一個程序,我已經創建了一個簡單的卡類。我如何創建並填充一副撲克牌?如何用卡類的實例填充甲板類? C++
0
A
回答
3
如果你有card
一類簡單地創建一個類用於deck
其中除其他事項外包含的數據結構(如std::vector
或陣列)以包含card
對象。然後執行功能,如deal
,shuffle
等或任何你認爲合適的。
要填充你的套牌,你可以使用add_card
函數。然後你可以使用它來遍歷所有的套裝和值,以創建每個不同套裝/值類型的卡片並將其添加到你的套牌。或者(或者另外),你可以在deck
構造函數中做到這一點,但具有add_card
函數將允許你的套牌模擬不同類型的套牌,例如個人卡hands
或多套牌遊戲,例如賭場二十一點。
如果從支持隨機訪問迭代器的標準C++庫使用的容器,你可以利用std::random_shuffle
功能的洗牌您deck
編輯:更新,其中包含一些評論
提出的觀點
0
這是爲了用一個例子延伸mathematician1975的回答是:
#include <iostream>
#include <string>
#include <map>
#include <array> //needs c++11 support
enum CARDSUIT { Spades, Hearts, Diamonds, Clubs };
typedef std::pair< int, int > Card;
template< class T, size_t N> struct DECK : public std::array< T, N>
{
void shuffle()
{
//see here for example:
// http://www.cplusplus.com/reference/algorithm/random_shuffle/
}
};
typedef DECK<Card, 52> StandardDeck;
int main()
{
int i=0,j=0;
StandardDeck deck;
for (i=Spades; i<=Clubs; i++)
for (j=0; j<13; j++)
deck[j + (i*13)] = Card(i,j);
for (i=0; i<(int)deck.size(); i++)
std::cout << deck[i].first << " " << deck[i].second << "\n";
return 0;
}
0
最簡單的方式是從一個int到一個卡的變換,使得從0-51每個數字產生一個獨特的卡。如何,只要它們都是獨一無二的,它並不重要。
然後,你可以從一個循環中的每個數字創建一副牌,可能是一個向量,你可以執行std :: random_shuffle來洗牌。
如果你想讓你的牌組保持「通用」關於要玩什麼遊戲,那麼不要使功能卡的功能成員功能,而是「免費」功能。例如黑桃王牌可能超過了Bridge中的黑桃7,但這是Bridge(和Whist相關遊戲)的一個特徵,而不是一般的牌。同樣,一張牌或套牌也沒有「王牌」的概念。
您可能需要爲小丑設置特殊卡片選項。當然,不使用jokers的遊戲不會允許其中的一個。
相關問題
- 1. 卡和甲板類C++
- 2. 甲板和卡類?
- 3. C++流/類模板/實例
- 4. C++模板類實例化
- 5. 類別比例與填充
- 6. 要用卡片填充陣列的類
- 7. 如何在F#中創建類實例並填充屬性?
- 8. 顯式實例化C++類模板實例化相關基類?
- 9. 在Ruby中實例化一個類並填充實例變量
- 10. 如何使用用戶定義的類實例填充python中的列表?
- 11. 如何實例化一個模板類
- 12. C++如何從派生類實例調用模板化的基類函數
- 13. C++ - 結構和類填充
- 14. C++類的實例
- 15. 如何填充結構/類
- 16. 如何填充類型爲
- 17. 填充父實例
- 18. 二十一點甲板類創作C#
- 19. 如何在模板實例化時在DataTemplate中填充控件?
- 20. 甲板卡錯誤的java
- 21. 在C++中的另一個類中的模板類實例化
- 22. 實例嵌套模板類
- 23. 創建在Visual Studio中填充窗體的類的實例
- 24. 實例類 - >靜態類 - > C#中的實例類
- 25. 如何在C++中將類類映射到該類的實例?
- 26. C++實例化類
- 27. 單類實例C++
- 28. 無法實例化類,同時填充JSF2中的selectonemenu
- 29. WxPython,如何用類屬性填充ListBox
- 30. 如何用CSS類填充Textarea?
有趣的問題 - 涵蓋填充容器,重新使用/重新使用現有類的算法等。 – slashmais