那么,当两个对象都有另一张卡enum
时,如何仅将卡object(card1)
的号码enum
与另一张卡object(card2)
的号码enum
进行比较颜色?
public enum Number
{
card_0,card_1
}
public enum Color
{
Red
}
public Card(int fNum, int fCol)
{
Number num = (Number)fNum;
Color color = (Color)fCol;
}
例如,card1是card_0和Red,card2是card_1和Red。 2张牌位于不同的列表中,一张是玩家的手,另一张是弃牌堆,所以如何比较号码或颜色的enum
,以便知道是否接受卡进入丢弃堆或拒绝它并说它不是可玩的牌。
if(/* Compare card1 and card2 */)
{
discardPile.Add(card1);
hand.RemoveAt(/* Location of card1*/);
}
else
{
/* do something */
}
提前致谢。
答案 0 :(得分:3)
我会在进行比较的Card
类中添加一个方法:
public bool DiscardOnTopAllowed(Card otherCard)
{
bool allowed = false;
if (Color == otherCard.Color)
allowed = true;
else if (Number == otherCard.Number)
allowed = true;
return allowed;
}
当然,写作的方式较少,但我试图在你学习的过程中保持超级明确。用法:
if (topCard.DiscardOnTopAllowed(selectedCard))
{
//Discard is good!
}
答案 1 :(得分:1)
您的问题是:如何比较枚举?我们假设您有两个卡片对象c1
和c2
。要检查它们是否具有相同的颜色:
if (c1.Color == c2.Color)
{
}
并比较您的卡号:
if (c1.Number == c2.Number)
{
}
另外,我建议更改卡的实施。如果您使用枚举,则操作枚举而不是整数。 enum
继承自int
的事实只是一个实现细节。但它不是一个数字。例如,它不支持数学运算(这是有意义的:Color.Black + Color.Red
的预期结果)。所以尽量不要将你的枚举与整数混淆。