首页 > 解决方案 > 使用数组在 C++ 中创建卡片组数据结构

问题描述

我正在尝试创建一个大小为 52 的数组,其中包含标准扑克牌中的所有卡片。如果不手动初始化每张卡,我将如何做到这一点?

这是我的代码:

    int main()
    {
        int suit;
        int face;
        int deck[52] = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52 };

        char suit[4] = { 'D','H','C','S' };

        int face[13] = { 1,2,3,4,5,6,7,8,9,10,10,10,10 };

        for (int count = 0; count < 52; count++) {
            face = deck[count] % 13;
            suit = deck[count] / 13;
        }



        return 0;
    }

标签: c++arraysif-statement

解决方案


这是一个相当简单的方法,只使用ints 来表示花色和值。我认为重要的是将面子和价值存储在一起,这样你就没有两个不同的容器来跟踪。

struct Card
{
  int suit, value;  
};

现在你可以很容易地填满一组卡片:

Card cards[52];
for (int i = 0; i < 52; ++i)
{
  cards[i].suit = i % 4; // 4 suits
  cards[i].value = i % 13; // 13 values
}

推荐阅读