【发布时间】:2015-09-03 10:49:13
【问题描述】:
我正在制作二十一点游戏作为练习的一种方式。起初我使用了一个数组,但决定尝试使用堆栈来制作一个版本,因为我可以使用堆栈的做法。
我创建了一个扑克牌类。
class PlayingCard
{
private:
int value;
char suit;
public:
PlayingCard();
PlayingCard(int val, char type)
{
value = val;
suit = type;
}
int getValue()
{
return value;
}
char getSuit()
{
return suit;
}
void setValue(int val)
{
value = val;
}
void setSuit(char type)
{
suit = type;
}
};
然后我创建了该类的堆栈。
stack<PlayingCard> deck1;
例如,现在我将以下内容压入堆栈:
deck1.push(PlayingCard('C', 9));
首先,我的理解是正确的吗?将 PlayingCard 对象推入堆栈,花色为“C”(俱乐部),值为 9?
我现在遇到的问题是当玩家从堆栈中“抽牌”时打印出花色和价值值。
我不能只做“cout
我试着用这个函数来打印出值:
void prints(PlayingCard tester)
{
cout << tester.getSuit() << " " << tester.getValue() << "\n";
}
调用如下所示:
prints(deck1.top());
但是,这并没有给我正确的输出。有什么建议吗?如果我应该只使用向量或数组,那么我想我可以这样做,但我认为使用堆栈会更好,因为堆栈可以更好地模拟实际的一副纸牌如何从顶部弹出和抽出一张牌的甲板。
【问题讨论】:
-
验证
PlayingCard(int val, char type)和deck1.push(PlayingCard('C', 9)); -
您是否在输出中看到“67” - 那是因为您的构造函数中的参数调用错误。
-
是的,我看到了很多 67。当我第一次运行程序时,我看到了 67s,奇怪的是,不同卡片套装的实际符号与我分配给它们的字符相反。谢谢你和另一张海报指出了混淆。一旦我调整了我的构造函数,一切正常。