В моих согласующих картах игр (после курса Стэнфорд) Я должен создать UISwitch
, который изменит режим игры между соответствием две карт три карты соответствием, теперь у меня уже есть соответствующий метод, который выглядит следующим образом:Как сравнить между тремя объектами в массиве?
-(int)match:(NSArray *)cardToMatch {
int score = 0;
if (cardToMatch.count == 1) {
PlayingCards *aCard = [cardToMatch lastObject];
if ([aCard.suit isEqualToString: self.suit]) {
score = 1;
} else if (aCard.rank == self.rank) {
score = 4;
}
}
return score;
}
Это уже массив, но я проверяю только две карты. Как я могу улучшить этот метод, чтобы проверить на три, или создать отдельный?
Это также метод, который проверяет карты, которые были перевернутые:
-(Card *) cardAtIndex:(NSUInteger)index {
return (index < self.cards.count) ? self.cards[index] : nil;
}
#define FLIP_COST 1
#define MISMATCH_PENALTY 2
#define BONUS 4
-(void) flipCardAtIndex:(NSUInteger)index {
Card *card = [self cardAtIndex:index];
if (!card.isUnplayable) {
if (!card.isFaceUp) {
for (Card *otherCard in self.cards) {
if (otherCard.isFaceUp && !otherCard.isUnplayable) {
int matchScore = [card match:@[otherCard]];
if (matchScore) {
otherCard.unplayble = YES;
card.unplayble = YES;
self.notification = [NSString stringWithFormat:@"%@ & %@ match!", card.contents, otherCard.contents];
self.score += matchScore * BONUS;
} else {
otherCard.faceUp = NO;
self.score -= MISMATCH_PENALTY;
self.notification = [NSString stringWithFormat:@"%@ did not matched to %@", card.contents, otherCard.contents];
}
break;
}
}
self.score -= FLIP_COST;
}
card.faceUp = !card.isFaceUp;
}
}
Спасибо.
Это не ответ на ваш вопрос, но может заставить вас думать: Почему вы используете сравнение строк, чтобы соответствовать костюмы? Сравнение строк довольно «дорого», поэтому вы можете использовать «enum» для представления костюмов вместо этого, поскольку их сравнение (целые числа) тривиально. – trojanfoe
это хорошая идея :) спасибо. возможно, у вас есть какое-то решение моего вопроса ..? даже если я пойду с предложением об использовании перечисления, как мне сравнить 3 объекта ..? вождение меня сумасшедшее @trojanfoe – JohnBigs
, и это первый раз, когда я что-то написал и никто не ответил. weird @trojanfoe – JohnBigs