我正在尝试制作一个简单的二十一点程序。可悲的是,我在生成一副扑克牌方面遇到了问题。

#include <iostream>
#include <vector>

using namespace std;

int main() {
    vector<char> deck;
    char suit[] = {'h','d','c','s'};
    char card[] = {'2','3','4','5','6','7','8','9','10','J','Q','K','A'};
    for (int j=0; j<13; j++) {
        for (int i=0; i<4; i++) {
            deck.push_back(card[j] suit[i]);
        }
    }

    return 0;
}

我知道我的问题始于我尝试将值“10”分配给char的问题。显然,我无法对此进行编译,但是可以肯定的是,当我尝试将卡值分配给 vector 卡座时,由于使用了变量类型'char',因此也会出现错误。知道使用哪种变量类型似乎让我丧命。另外,会'deck.push_back(card [j] suit [i]);'是将证卡和西服相结合的正确代码,还是您必须在证卡[j]和西服[i]之间放置一些内容?如果您能带领我朝正确的方向前进,我将不胜感激。另外请注意,这是家庭作业的一部分,所以请不要只给我完整的代码块。谢谢你的帮助。

最佳答案

尝试使用衣服和卡片作为成员来创建卡片类别,并将其设置为 vector 类型。喜欢

public class Card {
 public:
  Card(char suit, char card);
  char suit, card;
};

int main() {
    vector<Card> deck;
    char suit[] = {'h','d','c','s'};
    char card[] = {'2','3','4','5','6','7','8','9','T','J','Q','K','A'};
    for (int j=0; j<13; j++) {
        for (int i=0; i<4; i++) {
                deck.push_back(new Card(card[j],suit[i]));
        }
    }
    return 0;
}

还可以在西装和卡片中使用枚举代替字符,这将使其更加清晰。

关于c++ - 产生一副纸牌,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/234388/

10-09 08:46