Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要帮助创建和显示我的卡片组吗_C#_.net - Fatal编程技术网

C# 需要帮助创建和显示我的卡片组吗

C# 需要帮助创建和显示我的卡片组吗,c#,.net,C#,.net,我对c#编码相当陌生,我很难将我的牌并排显示出来,而且我不确定我一开始是否正确地对牌和牌组进行了编码。任何有用的东西,包括提示 我的枚举 public enum SuitEnum { Hearts, Diamonds, Clubs, Spades } public enum ValueEnum { Ace = 1, Two = 2, Three = 3

我对c#编码相当陌生,我很难将我的牌并排显示出来,而且我不确定我一开始是否正确地对牌和牌组进行了编码。任何有用的东西,包括提示

我的枚举

public enum SuitEnum
    {
        Hearts,
        Diamonds,
        Clubs,
        Spades
    }

    public enum ValueEnum
    {
        Ace = 1,
        Two = 2,
        Three = 3,
        Four = 4,
        Five = 5,
        Six = 6,
        Seven = 7,
        Eight = 8,
        Nine = 9,
        Ten = 10,
        Jack = 10,
        Queen = 10,
        King = 10
    }
卡片类

public class Card
    {       
        SuitEnum Suit { get; set; }
        ValueEnum Value { get; set; }

        public Card(SuitEnum cardSuit, ValueEnum cardValue)
        {
            Suit = cardSuit;
            Value = cardValue;
        }
    }
最后是我的甲板课

public class Deck
    {
        public List<Card> Cards { get; set; }

        public Deck()
        {
            Cards = new List<Card>();
            foreach (SuitEnum suit in Enum.GetValues(typeof(SuitEnum)))
            {
                foreach (ValueEnum value in Enum.GetValues(typeof(ValueEnum)))
                {
                    Cards.Add(new Card(suit, value));
                }
            }                      
        }
公共类甲板
{
公共列表卡{get;set;}
公共甲板()
{
卡片=新列表();
foreach(Enum.GetValues中的SuitEnum suit(typeof(SuitEnum)))
{
foreach(Enum.GetValues中的ValueEnum值(typeof(ValueEnum)))
{
卡片。添加(新卡片(套装、价值));
}
}                      
}

现在我已经对我的卡和卡组进行了编码,我如何在主程序代码中显示每次洗牌的所有52张卡?我是否必须在类中创建另一个方法?或者可能只是在主代码中创建一个循环?让我知道您的想法。

我不知道您的应用程序,但因为您是StackOverflow的新手,所以我为您更改了一些代码您的卡需要洗牌。我删除了枚举重复,并在卡类中添加了一个显示方法。我通过检查重复从给定范围生成一个随机数。我希望它对您有用

public enum SuitEnum
{
    Hearts,
    Diamonds,
    Clubs,
    Spades
}

public enum ValueEnum
{
    Ace = 1,
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5,
    Six = 6,
    Seven = 7,
    Eight = 8,
    Nine = 9,
    Ten = 10,
    Jack = 11,
    Queen = 12,
    King = 13
}

public class Card
{       
    SuitEnum Suit { get; set; }
    ValueEnum Value { get; set; }

    public Card(SuitEnum cardSuit, ValueEnum cardValue)
    {
        Suit = cardSuit;
        Value = cardValue;
    }

    public string Display()
    {
        return Suit + "" + Value.ToString();
    }
}

    public class Deck
    {
        public List<Card> Cards { get; set; }

        public Deck()
        {
            Random rand = new Random();
            Cards = new List<Card>();
            List<int> possibleSuit = Enumerable.Range(1, 4).ToList();
            List<int> listNumberSuite = new List<int>();
            for (int i = 0; i < 4; i++)
            {
                int index = rand.Next(0, possibleSuit.Count);
                listNumberSuite.Add(possibleSuit[index]);

                SuitEnum suit = (SuitEnum)possibleSuit[index];
                possibleSuit.RemoveAt(index);
                List<int> possibleDeck = Enumerable.Range(1, 13).ToList();
                List<int> listNumberDeck = new List<int>();

                for (int j = 0; j < 13; j++)
                {
                    int indexDeck = rand.Next(0, possibleDeck.Count);
                    listNumberDeck.Add(possibleDeck[indexDeck]);

                    ValueEnum deck = (ValueEnum)possibleDeck[indexDeck];
                    Cards.Add(new Card(suit, deck));

                    possibleDeck.RemoveAt(indexDeck);
                }
            }
            foreach (Card c in Cards)
            {
                Console.WriteLine(c.Display());
            }
        }
    }
public enum SuitEnum
{
心,
钻石,
俱乐部,
黑桃
}
公共枚举值枚举
{
Ace=1,
二等于二,
三等于三,
四等于四,
五等于五,
六等于六,
七等于七,
八等于八,
九等于九,
十等于十,
杰克=11,
女王=12,
国王=13
}
公务舱卡
{       
SuitEnum Suit{get;set;}
ValueEnum值{get;set;}
公共卡(SuitEnum cardSuit,ValueNum cardValue)
{
西服=卡片西服;
价值=信用卡价值;
}
公共字符串显示()
{
return Suit+“”+Value.ToString();
}
}
公务舱甲板
{
公共列表卡{get;set;}
公共甲板()
{
Random rand=新的Random();
卡片=新列表();
List possibleSuit=Enumerable.Range(1,4).ToList();
List listNumberSuite=新列表();
对于(int i=0;i<4;i++)
{
int index=rand.Next(0,possibleSuit.Count);
listNumberSuite.Add(可能的suit[index]);
SuitEnum suit=(SuitEnum)可能的suit[index];
可能的诉讼移除(索引);
List-possibleDeck=Enumerable.Range(1,13).ToList();
List listNumberDeck=新列表();
对于(int j=0;j<13;j++)
{
int indexDeck=rand.Next(0,可能的deck.Count);
添加(可能的检查[indexDeck]);
ValueEnum组=(ValueEnum)可能的检查[indexDeck];
卡片。添加(新卡片(套装、套牌));
可能的删除(indexDeck);
}
}
foreach(卡片中的卡片c)
{
Console.WriteLine(c.Display());
}
}
}

首先,我不确定是否正确编码了卡牌和牌组。然后编写单元测试以验证应用程序的正确行为。卡牌有等级和值,其值取决于游戏内容。扑克和Euchre使用不同的值。卡牌计算应覆盖
ToString()
我可以指出,要小心。你可以有重复的,但这会影响平等性和转换。欢迎来到StackOverflow。像这样的问题太广泛了,无法回答,因为你似乎根本不知道如何设计、组织和创建一个运行的程序,而不是在实际代码中遇到问题。你的问题很难解决时间与。请参观帮助中心,了解如何提出好的问题。祝你好运!有很多不同的方法,例如,如果我们放弃枚举并构建简单类,我们可以轻松生成一副牌,如:
(从西服中的西服从“23456789JQKA”中的值选择新卡(西服,值))。ToArray();
3行,简单的LinQ标量积。清晰可读。@Tyler Weber检查更新的答案我解决了循环问题