这是我创建的一个函数,用来处理套牌类牌中的n张牌。当发牌时,应该从卡组中“移除”(即不能再处理)。我以为我通过使用指针来解决这个问题,并从甲板后面减去我迄今处理过的牌的数量。如果我再次调用该函数,我需要从缺少卡片的套牌进行绘制,并且由于在任何时候我都不洗牌,所以我认为这种方法可行。处理一副牌(非重复牌)
'dealt'在我的代码的前面定义,并且从0开始。 Card是一个持有特定花色和价值的类。
我把手中的一个样本输出处理,当我调用dealNumber功能6倍且n = 5。
ST CK D3 HJ D9
HK DK SA SQ DT
HK S4 D2 C9 H5
HK H6 H7 H2 H4
HK HK SK S8 C5
HK H9 S3 D8 H8
的 '平台' 是有序不过是这样的:
S6 S2 S7 D7 S9 CQ D4 CA CJ SJ HQ DQ D5 HA DA C4 HT H3 CT D6 C2 S5 H8 D8 S3 H9 C7 C5 S8 SK HK C8 H4 H2 H7 H6 C3 H5 C9 D2 S4 C6 DT SQ SA DK DJ D9 HJ D3 CK ST
我处理的第一手是正确的,但其他人没有。 'dealt'应该通过甲板课继续进行,无论如何,我会在哪里出错?
Hand* Deck::dealingNumber(int p){
Card* dealtCards = new Card[p];
Card* oldDeck = deck;
for (int i = 0; i<n; i++){
dealtCards[i] = deck[(51-dealt)-i];
}
dealt = dealt+n;
deck = new Card[52-dealt];
for (int i = 0; i < 51-dealt;i++){
deck[i] = oldDeck[i];
}
delete[] oldDeck;
PokerHand* hand = new PokerHand(dealtCards);
return hand;
你的问题是什么? – user1118321 2013-05-08 03:41:51
对不起。我试图弄清楚我在代码中做错了什么,不能正确处理卡片。 – user2105982 2013-05-08 03:47:57
你必须为此使用数组吗?使用类似'std :: stack'或者'std :: vector'来持有你的卡片可能会容易得多。 – Xymostech 2013-05-08 03:51:50