今天我用C#开始了一个控制台项目。 我的想法是为52张卡的标准套牌中的每张卡设置一个班级。 我现在正在实施我的第一张卡片" Two"所以卡的值为2。 问题是甲板上有4张牌,其中包括2张" 2"任何有不同的颜色" (例如,俱乐部,钻石,心脏,铁锹)。因此,我必须跟踪我稍后将创建的卡片对象具有哪种颜色。 我绝对不知道该怎么做?
我google了一下,我的想法是每当我创建一个新对象时以某种方式切换颜色:
俱乐部 - >钻石 - >炉膛 - > spade (然后它从我创建第二个牌组开始时开始)因为二十一点游戏包含6个52张牌的牌组。
到目前为止,这是我的班级:
class Two : ICard // thats the card with the value of "One";
{
// in a deck of 52 cards there are 4 cards with "Two" in each color: club, diamond, heart, spade
public string Name { get => Name; private set => Name = value; }
public int Value { get => Value; private set => Value = value; }
public int MaxIncludedInDeck { get => MaxIncludedInDeck; private set => MaxIncludedInDeck = value; }
public string CardColor { get => CardColor; private set => CardColor = value; }
public Two()
{
Name = "One";
Value = 1;
MaxIncludedInDeck = 4;
// TODO: Figure out how to set one object to club, one to diamond, one to hearth and one to spade
}
}
它只是用相同的方法实现一个接口(我通过使用接口练习OOP)。
也许你可以引导我走向正确的方向并告诉我一些如何解决这个问题的想法? 提前谢谢!
答案 0 :(得分:1)
你可以这样做: 使用构造函数创建Card类,该构造函数将颜色和值作为参数。还要创建一个包含所有52张卡片的Deck类,它将负责实例化您的卡片。您可以在下面找到一些示例代码。
public enum CardColor
{
Club =0,
Diamond =1,
Hearth = 2,
Spade = 3
}
public class Card
{
public CardColor CardColor { get; set; }
public int Value {get;set;}
public Card(CardColor cardColor,int value) {
CardColor = cardColor;
Value = value;
}
}
public class Deck
{
public List<Card> Cards { get; set; } = new List<Card>();
//also instead on having a method to initialize the Deck you can do that
// in the constructor of the Deck class
public void InitilizeDeck()
{
foreach (var cardColor in Enum.GetValues(typeof(CardColor))) {
for (int i = 1; i<=10;i++)
{
Cards.Add(new Card((CardColor)cardColor, i));
}
}
}
}
//then use the Deck class like that
var deck = new Deck();
deck.InitilizeDeck();
var cards = deck.Cards;