私のBlackjackアプリケーションでは、NSMutableArrayである手の値を取得する以下のメソッドがあります。ここで問題となるのは、2つのエースが手に入っているときは12でなければなりませんが、エースを11とカウントするため22になり、結果としてlowValueが返されます。NSMutableArrayの重複オブジェクトの値を変更しますか?
forループで既にAceが見つかっているかどうかを確認し、別のものを見つけたら、次のAceを11ではなく1にすることができます。
ありがとうございます!
int getHandValue(NSMutableArray *hand) {
int lowValue = 0;
int highValue = 0;
for (KCCard *aCard in hand) {
if (aCard.value == Ace) {
lowValue+= 1;
highValue+= 11;
} else if (aCard.value == Jack || aCard.value == Queen || aCard.value == King) {
lowValue += 10;
highValue += 10;
} else {
lowValue += aCard.value;
highValue += aCard.value;
}
}
return (highValue > 21) ? lowValue : highValue;
}
あなたがACEを探しているかどうかを保存するために「BOOL isFindAce」を追加することができます。 – zsxwing
@zsxwingだから、もし私がhighValueの下にBOOLを置いて、その値がAceならばBOOLをtrue/yesに設定し、別のAceが現れたならtrue/yesを読んで1に値するでしょうか? – Alec