2

私のカード マッチング ゲーム (スタンフォード コースに従う) ではUISwitch、ゲーム モードを 2 枚のカードのマッチングから 3 枚のカードのマッチングに変更するを作成する必要がありました。

-(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;
}

それはすでに配列ですが、2枚のカードの間でのみチェックしています。このメソッドを改善して 3 つもチェックするか、別のメソッドを作成するにはどうすればよいですか?

これは、めくられたカードをチェックするメソッドでもあります。

-(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;

    }
}

ありがとう。

4

1 に答える 1

0

一致させようとしているカードのインデックスをすでに知っていると思います。したがって、3つのインデックスがある場合は、マッチング関数がブール値を返すようにします。次に、ネストされたifを使用して、3番目のカードをテストできます。こんな感じになります。

if([self match:index1 card2:index2]){
    if(self match:index1 card2:index3){
        NSLog(@"You have a match");
    }
}
else NSLog@"No match";

マッチング関数は次のようになります。

-(BOOL)match:(int)index1 card2:(int)index2{
    //Do your matching here and return if YES or NO accordingly
}
于 2013-03-19T14:09:42.863 に答える