古典的なポーカー/カード ゲーム タイプのプログラムでフラッシュを作ろうとしています。プロパティはスート (ハート、ダイヤなど) で、配列はハンドです。私は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 ループは各カードを比較して false を探し、そうであれば false を返します。for ループの外側/後 (それらがすべて true であると仮定)、ハンドの最後の 2 枚のカードの比較の true/false を返します。私はそれを複雑にしすぎていますか?違いますか?
編集:私はこれを見ることができます:「if (hand[i].Equals(hand[i + 1]) == false)」は範囲外の例外になるため、カードとカードを比較する新しい方法が必要です。何か案は?