我对 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...
}
这似乎非常乏味,特别是如果我考虑稍后添加不同风格的扑克牌,或者如果我让用户选择在运行时更改卡片的风格。对此有什么有效的设计?