需要洗牌一系列卡片并打印它们
Need to shuffle an array of cards and print them
我需要一个功能来洗牌我创建的卡片和一个 环形 在打印改组值的主要中。我不想改变 任何事物 否则。该功能必须将52张卡和甲板尺寸摄取为 参数。有帮助吗?我的问题是我不知道如何编写洗牌功能并打印它。
#include <iostream>
#include <string>
#include <cstdlib>
#include <ctime>
using namespace std;
class Card
{
private:
string suit;
string value;
public:
Card() = default;
Card(string a, string b)
{
value = a;
suit = b;
}
string getSuit()
{
return suit;
}
string getValue()
{
return value;
}
void print()
{
cout << getValue() << " of " << getSuit() << endl;
}
void shuffle(Card cardlist[52], int size)
{
}
};
int main()
{
Card cardlist[52];
cardlist[0] = Card("2","Spades");
cardlist[1] = Card("3","Spades");
cardlist[2] = Card("4","Spades");
cardlist[3] = Card("5","Spades");
cardlist[4] = Card("6","Spades");
cardlist[5] = Card("7","Spades");
cardlist[6] = Card("8","Spades");
cardlist[7] = Card("9","Spades");
cardlist[8] = Card("10","Spades");
cardlist[9] = Card("Jack","Spades");
cardlist[10] = Card("Queen","Spades");
cardlist[11] = Card("King","Spades");
cardlist[12] = Card("Ace","Spades");
cardlist[13] = Card("2","Hearts");
cardlist[14] = Card("3","Hearts");
cardlist[15] = Card("4","Hearts");
cardlist[16] = Card("5","Hearts");
cardlist[17] = Card("6","Hearts");
cardlist[18] = Card("7","Hearts");
cardlist[19] = Card("8","Hearts");
cardlist[20] = Card("9","Hearts");
cardlist[21] = Card("10","Hearts");
cardlist[22] = Card("Jack","Hearts");
cardlist[23] = Card("Queen","Hearts");
cardlist[24] = Card("King","Hearts");
cardlist[25] = Card("Ace","Hearts");
cardlist[26] = Card("2","Diamonds");
cardlist[27] = Card("3","Diamonds");
cardlist[28] = Card("4","Diamonds");
cardlist[29] = Card("5","Diamonds");
cardlist[30] = Card("6","Diamonds");
cardlist[31] = Card("7","Diamonds");
cardlist[32] = Card("8","Diamonds");
cardlist[33] = Card("9","Diamonds");
cardlist[34] = Card("10","Diamonds");
cardlist[35] = Card("Jack","Diamonds");
cardlist[36] = Card("Queen","Diamonds");
cardlist[37] = Card("King","Diamonds");
cardlist[38] = Card("Ace","Diamonds");
cardlist[39] = Card("2","Clubs");
cardlist[40] = Card("3","Clubs");
cardlist[41] = Card("4","Clubs");
cardlist[42] = Card("5","Clubs");
cardlist[43] = Card("6","Clubs");
cardlist[44] = Card("7","Clubs");
cardlist[45] = Card("8","Clubs");
cardlist[46] = Card("9","Clubs");
cardlist[47] = Card("10","Clubs");
cardlist[48] = Card("Jack","Clubs");
cardlist[49] = Card("Queen","Clubs");
cardlist[50] = Card("King","Clubs");
cardlist[51] = Card("Ace","Clubs");
for (int i = 0; i < 52; i++)
cardlist[i].print();
return 0;
}
我通常不帮助完成作业,除非它是一个衬里。你很幸运,因为那是!(但是,您的教授不太可能在没有解释的情况下接受这一点,因此您需要花一些时间理解为什么这有效。(
要使用shuffle
的卡片:
shuffle(begin(cardlist), end(cardlist), mt19937(random_device()()))
实时示例
我还应该在这里指出您在Card
类中有一个shuffle
方法。这是没有意义的。方法可以在对象上操作。每个Card
都是一个独特的扑克牌,可以通过其方法来操作其属性。你不会把黑桃的王牌洗牌。您洗牌一张牌。因此,如果您要创建一个包含52个Card
对象的Deck
类,那么制作Deck::shuffle
方法是很有意义的,因为您实际上确实会随机洗牌。
您可以使用rand()
函数随机生成两个数字,然后将这两个数字作为其索引交换。
添加一个for循环可以使您更随机进行改组。
void shuffle(Card cardlist[52], int size)
{
int v2;
int v1;
int loop=rand() % 100;
for(int i=0;i<loop;i++)
{ v1 = rand() % size;
v2 = rand() % size;
Card temp=cardlist[v1];
cardlist[v1]=cardlist[v2];
cardlist[v2]=temp;
}
请注意,这是假设您需要洗牌功能作为类卡的成员
最好使其成为班级卡的朋友。
相关文章:
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 如何打印属于地图的一系列元素(std::p air<size_t,std::string>)(不是所有元素)
- 需要洗牌一系列卡片并打印它们
- 代码打印出一系列无意义的数字
- 如何打印一系列矩形
- 一系列指针存储地址并以后打印
- 我的一系列结构正在打印垃圾
- 如何用指针打印一系列字符
- 通用地打印一系列变量及其名称
- 使用 while 循环打印一系列偶数和奇数
- 打印一系列数字优化第1部分