Я довольно новичок в Qt. Это первая структура, с которой я работал. Я пишу игру в блэкджек, используя Qt. Мне кажется, что я должен хранить изображения каждой карты в классе контейнеров, например QVector
. Тип контейнера должен быть QImage
. Поэтому у меня было бы объявление типа QVector<QImage> cards;
Возможно, это не лучший способ приблизиться к этой проблеме, поэтому любое альтернативное предложение, конечно, приветствуется. Однако, независимо от того, я хотел бы знать, можно ли инициализировать контейнер во время объявления. Я не был в состоянии решить это так мое решение заключается в следующем:Инициализация QVector QImages
// 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...
}
Это, кажется, больно утомительно, особенно если я считаю, добавив другой стиль игральных карт позже, или если я дать пользователю возможность изменить стиль карт во время выполнения. Каким был бы эффективный дизайн?
«если возможно инициализировать контейнер во время декларации» - в C++, нет. «Это кажется мучительно утомительным» - да, но вы получите опыт и следующий проект (или, может быть, этот), вы сделаете лучше. per aspera ad astra. Удачи! –