Создаю игру в стиле «сумасшедшие восьмерки», но у меня возникают проблемы с обновлением рук - PullRequest
0 голосов
/ 26 апреля 2020

Я создаю программу, которая позволяет человеку играть в карточную игру сумасшедшие восьмерки против компьютера для класса, и я сталкиваюсь с несколькими проблемами, пытаясь добавить карты из колоды в руку игрока. класс моей руки

class Hand {
  private:
    Card* cards;
    int n_cards;  // Number of cards in the hand.
  public:
Hand();
~Hand();
Hand(const Hand&);
Hand& operator= (const Hand&);
void set_cards(int n, Card card);
void set_n_cards(const int n_cards);
Card get_cards(int i);
int get_n_cards();
void increase_n_cards();
bool ifPlayable(int cardNum, Card& topPile);
void isEight(Card&);
void playCard(int index);
};

, и я пытаюсь добавить карты, используя:

      void Hand::set_cards(int n, Card card)

{

    Card** temp = &cards;
Card* new_hand = new Card[n_cards+1];

for(int i = 0; i < n_cards; i++)
{
new_hand[i].setCard((*temp)[i].getSuit(),(*temp)[i].getRank());//copy over the hands

}

new_hand[n_cards].setCard(card.getSuit(),card.getRank());//add the new card from deck

delete[] *temp;//delete the pointer and set it to the new deck
*temp = nullptr;
*temp = new_hand;
n_cards++;
}

Во-первых, я получаю ошибку сегмента, пытающуюся удалить временную переменную, которая говорит "недопустимое удаление", и я запутался почему. Я также получаю ошибки seg при попытке получить доступ к массиву карт, но я думаю, что это может быть потому, что n_cards не обновляется. Он сбрасывается до 0, и я посмотрел на все очевидные (по крайней мере для меня) места и не могу найти причину. Я новичок в кодировании и делаю это для задания. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...