Это функция, которую я создал, чтобы попытаться разрешить n карт из класса колоды карт. Когда раздаётся карточка, она должна быть «удалена» из колоды (т. Е. Не может быть снова обработана). Я решил, что решил это, используя указатели, и вытащив из задней части колоды минус количество карт, которые я до сих пор использовал. Если я снова вызову функцию, мне нужно рисовать из колоды с отсутствующими картами, и, поскольку я не перетасовываю колоду в любой момент, я думал, что этот метод будет работать.Работа с колодой карт (не повторяющихся карт)
«dealt» определен ранее в моем коде и начинается с 0. Карта - это класс, который содержит определенный костюм и значение.
я положил пример вывода из рук дело, когда я вызвать функцию dealNumber 6 раз и п = 5.
ST CK D3 HJ D9
HK DK SA SQ DT
HK S4 D2 С9 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
Первая рука, котор я держу правильно, но другие нет. «сдавать» следует переносить через класс колоды, независимо от того, где я буду ошибаться?
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
Извините. Я пытаюсь понять, что я сделал неправильно в своем коде, чтобы не правильно раздавать карты. – user2105982
Вам нужно использовать массивы для этого? Использование чего-то типа 'std :: stack' или' std :: vector' для хранения ваших карт, вероятно, будет намного проще. – Xymostech