好的,所以我正在为一个计算机科学课程的最后一个项目工作,而我在掌握如何推进任务方面遇到了麻烦。
提供的标准是: 创建一个由52张扑克牌组成的标准牌组,并在屏幕上列出这些牌。显示未洗牌的牌组后暂停。
"随机"甲板并在屏幕上列出洗牌的甲板。 random_shuffle from将用于卡片矢量
排序(按排名)并评估牌组的前5张牌作为'手牌。打印未排序的,然后打开排序的手。
然后我们必须检查对,三种,满屋,直道,冲水等等(我非常有信心,我可以处理)
教授给了我们这段代码作为卡片类的理念:
#ifndef CARD_H
#define CARD_H
class Card
{
public:
Card();
// set and get the rank, 2=2, 3=3, ... 10=10, 11=J, 12=Q, 13=K, 14=A
void setRank(int r);
int getRank();
// set and get the suit, 1=Spades, 2=Hearts, ...
void setSuit(int r);
int getSuit();
// for debugging, print the suit and rand as integers
void print();
// return the rank and suit as a 'nice' looking string
void toString();
protected:
private:
int myRank;
int mySuit;
};
#endif // CARD_H
阅读时,似乎我可能也需要制作套牌和手工课程,但由于他们的目标和限制似乎总是不同,我只是不确定如何真正继续这一点。我非常有信心,一旦我弄清楚我需要哪些课程,以及如何使它们一起发挥得很好并且能够正常启动,我能够将它们拼凑在一起并轻松地完成剩下的工作。
有人能指出我正确的方向吗?
答案 0 :(得分:0)
首先,你不需要甲板或手的课程。可能有些情况下你可能需要将它们作为一个单独的类,但在这种特殊情况下,只需要一个卡片矢量(它实际上会给你一个关于你需要使用random_shuffle
矢量这一事实的提示该手由该向量的5个连续元素表示。
虽然与您的问题没有直接关系,但我想提及一篇名为The Danger of Naïveté的文章,其中分析了洗牌问题。它可能会帮助您创建一个真正的混乱,并且分布均匀。