Я довольно новичок в Qt. Это первый фреймворк, с которым я работал. Я пишу игру в блэкджек, используя Qt. Мне кажется, что я должен хранить изображения каждой карты в классе-контейнере, таком как QVector
. Тип контейнера будет QImage
. Так что у меня было бы такое объявление, как QVector<QImage> cards;
Возможно, это не лучший способ решения этой проблемы, поэтому любые альтернативные предложения, конечно, приветствуются. Однако независимо от этого я хотел бы знать, можно ли инициализировать контейнер во время объявления. Я не смог решить эту проблему, поэтому мое решение следующее:
// Deck.h
class Deck
{
public:
Deck();
void shuffle(); // Creates new deck and shuffles it.
QImage &popCard(); // Removes first card off deck.
private:
void emptyDeck(); // Empty the deck so new cards can be added
QVector<QImage> cards;
QQueue<QImage> deck;
};
// Deck.cpp
Deck::Deck()
{
cards.push_back(QImage(":/PlayingCards/Clubs 1.png"));
cards.push_back(QImage(":/PlayingCards/Clubs 2.png"));
cards.push_back(QImage(":/PlayingCards/Clubs 3.png"));
cards.push_back(QImage(":/PlayingCards/Clubs 4.png"));
// continue process for entire deck of cards...
}
Это кажется болезненно утомительным, особенно если я подумаю о добавлении другого стиля игральных карт позже или если я даю пользователю возможность изменить стиль карт во время выполнения. Что было бы эффективным дизайном для этого?