我正在尝试在经典的扑克/纸牌游戏类型程序中进行同花顺。属性是花色(红心、钻石等),数组是手。我使用了 IEquatable 并实现了 Equals 方法
public bool Equals(SuperCard otherCard)
{
if (otherCard == null)
return false;
return (this.cardSuit.Equals(otherCard.cardSuit));
}
从那里开始,在我的 Program.cs 中,我正在使用 .Equals 为 Flush 编写一个 bool 方法。有人建议我使用 for 循环,但我无法理解我是否正确执行此操作。我需要逐卡比较 cardSuit 属性。但我不确定如何去做。任何帮助,将不胜感激。到目前为止,这是我在方法中所拥有的。
private static bool Flush(SuperCard[] hand)
{
for (int i = 0; i < hand.Length; i++)
{
if (hand[i].Equals(hand[i + 1]) == false)
{
return false;
}
}
return hand[hand.Length].Equals(hand[hand.Length - 1]);
}
在我看来,for 循环会比较每张卡片以查找任何假的,如果是则返回假。在 for 循环之外/之后(假设它们都是真的),我返回手中最后两张牌比较的真/假。我把它复杂化了吗?这是错的吗?
编辑:我可以看到:“if (hand[i].Equals(hand[i + 1]) == false)”会超出范围异常,所以我需要一种新的方法来比较卡片与卡片。有任何想法吗?