【发布时间】:2017-08-25 05:47:19
【问题描述】:
今天我用 C# 开始了一个控制台项目。 我的想法是为标准一副 52 张卡片中的每张卡片设置一个类。 我现在正在实施我的第一张卡片“Two”,所以这张卡片的价值为 2。 问题是一副牌包含 4 张“Two's”牌,任何“颜色”不同(例如,梅花、菱形、红心、黑桃)。所以我必须跟踪我稍后将创建的卡片对象上的颜色。 我完全不知道该怎么做?
我用谷歌搜索了一下,我的想法是每次创建新对象时都以某种方式切换颜色:
club --> diamond --> hearth --> spade (然后从我创建第二副牌时开始),因为二十一点游戏包含 6 x 一副 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)。
也许您可以引导我走向正确的方向,并告诉我一些如何解决该问题的想法? 提前致谢!
【问题讨论】:
-
为什么你应该有一个用于二、三、...的类,而不仅仅是一个具有可以是二、三的 Value 属性的 Card 类
-
执行此操作的经典方法是有一个 Card 类,具有 Rank 和 Suit 属性
-
所以你的想法是创建一个卡片类,然后给它一个值和颜色的属性?然后用 for 循环实例化一个包含大量此类卡片的牌组,并且每次我更改传递给构造函数的变量时?
-
您可能会混淆类和实例的概念。一个类定义了一种事物的类型(例如具有属性 Value 和 Suit 的 Card),而该事物的每个实例都是该类的实例,具有自己的属性值(例如 Value = 2 且 Suit = Spades 的 Card)。定义一个 Card 类(如 Ashkan 所述),然后创建(“新建”)您需要的该类的许多实例,这听起来像是您正在寻找的方向。
-
哇,我太慢了。是的,GeraltDieSocke,这听起来像是一个好的开始。 :-)
标签: c# object properties