c# - 创建一副简单的纸牌 C#

标签 c# arrays loops

我正在尝试用 4 种花色制作一副 52 张牌:黑桃、红桃、梅花和方 block 。我试图在我的 Deck 类中创建这个 for 循环,但似乎遇到了一些关于实际让程序执行我想要的操作的问题。我在想也许我可以像作业中暗示的那样做 4 个 for 循环,但是是否可以使用 if/else-ifs 在牌组中创建 4 个花色?

class Deck
{
    private Card[] cards;

    public Deck()
    {
        cards = new Card[52];
        int check = 0;

        for (int suitVal = 1; suitVal < 4; suitVal++)
        {
            for (int rankVal = 1; rankVal < 14; rankVal++)
            {
                if(suitVal == 1)
                {
                    cards[check] = new Card(rankVal, "Spades");
                }
                else if (suitVal == 2)
                {
                    cards[check] = new Card(rankVal, "Hearts");
                }
                else if (suitVal == 3)
                {
                    cards[check] = new Card(rankVal, "Clubs");
                }
                else if (suitVal == 4)
                {
                    cards[check] = new Card(rankVal, "Diamonds");
                }
            }
        }

    }

最佳答案

是的,这是可能的。 共有 13 张牌和 4 套花色。这个想法是,对于每套西装,您可以创建 13 张牌。伪代码几乎就是你已经得到的:

for each of the four suits
   loop 13 times for said suit

以下是您的代码存在的问题:

1- 你的 check 变量永远不会递增,所以你总是覆盖位置 0 上的卡片;它应该在每张卡插入后递增(内循环)

2- 你的外层循环只运行了 3 次(i = 1,i = 2,i = 3),并且有 4 套花色。

如果您需要更多帮助,请告诉我。

关于c# - 创建一副简单的纸牌 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33028678/

相关文章:

c# - Entity Framework 代码优先、MVC、SqlException

c# - 使用 lambda 从 List 获取数组数组?

C# const 保护与内部

c# - VS2010 和 WPF 缓慢调试问题

arrays - 如何对对象数组进行排序 - google-apps-script

c - 在 C 中交换一维数组的列/行

arrays - Unix shell 迭代两个值数量不等的列表

c++ - 我在这里使用 "cin.get"有什么问题?

javascript - 如何在脚本中循环形成 Action ?

检查序列是否单调递增的代码