- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
类(class)让我很困惑!对于这个特定的任务,我们将执行经典的“卡片组中的卡片”程序。我们要创建两个类,一个称为“Card”,另一个称为“Deck”。到目前为止,我已经完成了其中的大部分工作,但我似乎忘记了一个概念。
当我们调用 Card 类的默认构造函数时,将创建所有 52 张卡片,以便 Deck 类可以使用这些对象并......创建一副牌!现在我参加了与我们的助教的 session ,他强调默认构造函数是初始化值,而 Deck 类获取这些对象并循环遍历它们以使用将真实卡片值分配给 Card 对象的函数。
我的问题是:创建这些对象以便 Deck 可以引用它们的最佳方法是什么?我现在的想法是创建一个名为“initialCard[4][13]”的固定数组。从那里,Deck 类将选择一个值——比如“initialCard[0][0]”,并将其分配给仅来自二维数组的行和列的黑桃 A。但是,我的助教一直在说“创建一个 Card 对象数组”。他这话是什么意思?我有一点把握,但我只是不确定......有人有什么想法吗?谢谢!
也许这会有所帮助;直接从作业页面:
Your card class should have public getter and setter functions for both of these variables (getValue, setValue, etc), as well as a function that will return a c-string representation of the card. (You can call it toCString if you want.) It should work something as follows:
void toCString(char cardString[]) INPUT: A character array for storing the output OUTPUT: NONE This function should return a character string representing the card object. This string must have the following form: two characters followed by a third null byte. The first character represents suit; the second represents value. Suits should be “S”, “H”, “C”, or “D” for spades, hearts,
clubs, diamonds. The second character represents value: “A” for Ace, 2-9 for numbered cards, “T” for 10, “J” for Jack, “Q” for Queen”, “K” for King. Some examples: 2 of spades = 'S2' 10 of hearts = 'HT' Jack of diamonds = 'DJ' Queen of clubs = 'CQ' Ace of spades = 'SA' etc.
In addition to these, you should have at least a default constructor to initialize the values. You are welcome to create other constructors (perhaps one that initializes a card from it's c-string representation?) but it is not required.
Deck Class: In addition to your card class, you will need to create a Deck class to encapsulate all of your card objects. In this object you should have a private member multi-dimensional array (of size SUITS by VALUES) of your Card objects. When a Deck object is created, you should have it initialize the multi- dimensional array of Cards. Card suits are represented by an enumerated type; card values are represented by an integer from 1 to 13 (1 is an Ace, 2-10 are numbered values, 11 is the Jack, 12 is the Queen, and 13 is the King).
Your constructor should loop over the multi-dimensional array and initialize all values so that the complete deck of cards is represented.
最佳答案
听起来您没有得到最好的建议。
将对象构造成真正有效的状态总是更清晰。因此,与其使用无意义的值默认构建卡片然后再填充,不如使用正确的值构建它们。这可以使用 vector
来完成,它具有数组的大部分优点。
所以,你会有
class deck {
std::vector< Card > cards;
...
deck() {
// no cards yet at this point
for ( size_t i = 0; i < 52; ++ i ) {
cards.push_back( Card( i ) );
}
// now array is valid
...
避免使用具有非平凡构造函数的 C 风格类数组。
关于c++ - C++ 中的简单类概念(一副牌),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3827320/
我正在尝试模拟“发现它!”的套牌用 Python 制作的卡片。对于那些不知道什么是“Spot it!”的人is- 这是一种流行的纸牌游戏,一副牌有 55 张牌,每张牌上有 8 个随机符号(例如球、波浪
我目前正在尝试解决与其他人编写的程序相关的问题,该程序使用 Jackcess 版本 1.1.8 将信息写入 Access 数据库。在向给定 Access 表添加 400 万行的运行中,出现以下异常:
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我是一名优秀的程序员,十分优秀!