【发布时间】:2015-07-12 20:11:41
【问题描述】:
我正在为纸牌游戏制作洗牌功能。我创建了一组 Card 对象。然后我尝试使用 random_shuffle 重新排列数组中的对象。但它不起作用。
char faces[13] = { '2', '3', '4', '5', '6', '7', '8', '9', 'T', 'J', 'Q', 'K', 'A' };
char suits[4] = { char(3), char(4), char(5), char(6) };
int values[13] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11 };
Card** deck = new Card*[52];
for (int row = 0; row <= 3; row++)
{
for (int column = 0; column <= 12; column++)
{
deck[Card::getCounter()] = new Card(suits[row], faces[column], values[column], true);
}
}
int size = sizeof(deck) / sizeof(deck[0]);
random_shuffle(*deck, *deck + size);
我的意思是,如果我与 cout 核对,比如
cout << deck[0]->getFace()<< deck[0]->getSuit() << endl;
它显示 2(心脏),就像使用 random_shuffle 之前一样
【问题讨论】:
-
请您详细说明不起作用!
-
Card::getCounter() 是如何工作的?你确定它填充了
deck中的所有元素吗? -
您对
size的计算不会给您您认为的结果。 -
放弃数组,使用
vector