C# 21点游戏甲板类麻烦

C# 21点游戏甲板类麻烦,c#,C#,我正在创建一个21点游戏,到目前为止,我已经创建了一个卡类,我开始创建一个卡组类,但我不确定如何使用数组中的值设置卡。我还必须使用deck类中的数组来完成这项工作 任何帮助都将不胜感激 这是我到目前为止在甲板课上学到的东西 class Deck { private const Int32 MAXCARDS = 52; private Card[] _cards = new Card[MAXCARDS]; Card.SUIT[] suits = { Card.SUIT.SP

我正在创建一个21点游戏,到目前为止,我已经创建了一个卡类,我开始创建一个卡组类,但我不确定如何使用数组中的值设置卡。我还必须使用deck类中的数组来完成这项工作

任何帮助都将不胜感激

这是我到目前为止在甲板课上学到的东西

class Deck
{
    private const Int32 MAXCARDS = 52;
    private Card[] _cards = new Card[MAXCARDS];
    Card.SUIT[] suits = { Card.SUIT.SPADES, Card.SUIT.HEARTS, Card.SUIT.DIAMONDS, Card.SUIT.CLUBS };
    String[] values = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };

    public Card()
    {

    }
    public Card GetCard(Int32 index)
    {

    }

    public Card SetCard(Int32 index, Card Card)
    {

    }
}

}

为了不破坏整个动作,请将注意力集中在您遇到困难的地方,并尝试在没有帮助的情况下进一步编写代码:)

类卡
{
公共enum套装{黑桃、红桃、钻石、梅花};
公共字符串值{get;set;}
公益诉讼{get;set;}
公共卡(套装、字符串值)
{
这套衣服;
这个。值=值;
}
}
甲板
{
私有常量Int32 MAXCARDS=52;
私人卡[]_卡=新卡[MAXCARDS];
公共甲板()
{
Card.SUIT[]suits={Card.SUIT.SPADES,Card.SUIT.HEARTS,Card.SUIT.DIAMONDS,Card.SUIT.CLUBS};
字符串[]值={“A”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“J”、“Q”、“K”};
随机rnd=新随机();
卡片[]orderedCards=新卡片[suits.Length*values.Length];
int newIndex=0;
//生成一个包含所有可能的套装和值组合的数组
对于(int-suitsIndex=0;suitsIndexrnd.Next()).ToArray();
//现在从0到51,将一张卡片设置为orderedCards数组的随机元素
对于(int i=0;i<\u cards.Length;i++)
{
这个._cards[i]=订购卡[randomNumber[i]];
Console.WriteLine(“Card”+i+“=”+\u cards[i]。Suit.ToString()+“-”+\u cards[i]。Value.ToString());
}
}
}

有一个卡片和牌组的框架,包括如何洗牌。看起来像是家庭作业?我可以根据我认为你可能被困的地方提供一个提示。虽然确实有52张卡片,但每张卡片必须同时由一个值和一套衣服来表示。我假设这种关系存在于Card类中。为什么甲板类会关心一张卡的套装和/或价值是多少?它只知道牌组中有N张牌,而不必知道牌是什么。我在这里的提示是,西装和价值观可能不适合甲板类。
 class Card
 {
     public enum SUIT { SPADES, HEARTS, DIAMONDS, CLUBS };

     public string Value {get; set;}
     public SUIT Suit { get; set; }

     public Card(SUIT suit, string value)
     {
         this.Suit = suit;
         this.Value = value;
     }
 }
 class Deck
 {
     private const Int32 MAXCARDS = 52;
     private Card[] _cards = new Card[MAXCARDS];

     public Deck()
     {
         Card.SUIT[] suits = { Card.SUIT.SPADES, Card.SUIT.HEARTS, Card.SUIT.DIAMONDS, Card.SUIT.CLUBS };
         String[] values = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K" };
         Random rnd = new Random();
         Card[] orderedCards = new Card[suits.Length * values.Length];
         int newIndex = 0;

         // Generate an array with all possible combinations of suits and values
         for (int suitsIndex = 0; suitsIndex < suits.Length; suitsIndex++)
         {
             for (int valuesIndex = 0; valuesIndex < values.Length; valuesIndex++)
             {
                 newIndex = values.Length * suitsIndex + valuesIndex; // Think about it :)
                 orderedCards[newIndex] = new Card(suits[suitsIndex], values[valuesIndex]);
             }
         }

         // Generate an array with random numbers from 0 51 (taken from http://stackoverflow.com/questions/5864921/how-can-i-randomize-numbers-in-an-array)
         int[] randomNumbers = Enumerable.Range(0, this._cards.Length).OrderBy(r => rnd.Next()).ToArray();

         // Now go from 0 to 51 and set a card to a random element of the orderedCards array
         for (int i = 0; i < _cards.Length; i++)
         {
             this._cards[i] = orderedCards[randomNumbers[i]];
             Console.WriteLine("Card " + i + " = " + _cards[i].Suit.ToString() + " - " + _cards[i].Value.ToString());
         }
     }
 }