【问题标题】:How to create A list of blackJack cards(method) with Factory class method. enums have been created for the values and suitsC# [duplicate]如何使用 Factory 类方法创建 blackJack 卡(方法)列表。已为值和套装创建枚举 C# [重复]
【发布时间】:2020-12-31 19:06:05
【问题描述】:

我想使用 for 循环和我的 Factory 类方法创建卡片组。我已将西装和面值设置为枚举。我应该如何解决这个问题?

public static class FactoryClass {
    public static Card CreateCard(CardFace face, CardSuit suit) {


        return new Card(face, suit);
       
    }


 
}



    public enum CardFace {
    A, _2, _3, _4, _5, _6, _7, _8, _9, _10, J, Q, K
}



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

 public void Deck() {
      

        for (int i = 0; i < 13; i++) {
            for (int j = 0; j < 4; j++) {
                _cards.Add(FactoryClass.CreateCard();
            }
        }
    }

【问题讨论】:

    标签: c# loops factory blackjack


    【解决方案1】:

    与您提出的问题并不严格相关,但我不确定拥有一家仅用于制作扑克牌的工厂的价值。但是,我认为拥有工厂对于创建一副牌更有价值。

    给定

    public enum CardFace
    {
        A, _2, _3, _4, _5, _6, _7, _8, _9, _10, J, Q, K
    }
    
    public enum CardSuit
    {
        Spades, Hearts, Clubs, Diamonds
    }
    
    public class Card 
    {
        public CardFace Face { get; set; }
        public CardSuit Suit { get; set; }
    
        public Card(CardFace face, CardSuit suit)
        {
            Face = face;
            Suit = suit;
        }
    }
    

    这就是您表示卡片的方式,您可以通过以下方式创建工厂来创建排序的卡片组:

    public static class CardFactory
    {
        public static IEnumerable<Card> CreateDeck()
        {
            foreach (CardFace face in Enum.GetValues(typeof(CardFace)))
            {
                foreach (CardSuit suit in Enum.GetValues(typeof(CardSuit)))
                {
                    yield return new Card(face, suit);
                }
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-18
      • 1970-01-01
      • 2021-12-13
      • 1970-01-01
      • 2017-10-02
      • 2015-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多