0
我對Qt相當陌生。這是我與之合作的第一個框架。我正在寫一個使用Qt的二十一點遊戲。在我看來,我應該將每張卡的圖像存儲在容器類中,例如QVector
。容器類型將是QImage
。所以我會有一個聲明,如QVector<QImage> cards;
也許這不是解決這個問題的最好方法,所以當然歡迎任何其他建議。但是,無論如何,我想知道在聲明期間是否可以初始化容器。我一直沒能解決這個,所以我的解決方案如下:初始化QImages的QVector
// 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++中,否。 「這似乎很痛苦乏味」 - 是的,但你會得到經驗和下一個項目(或可能是這一個),你會變得更好。 每aspera ad astra。祝你好運! –