Please note, this blog entry is from a previous course. You might want to check out the current one.
Choose reasonable amounts to award the user for successfully finding a set (or incorrectly picking cards which are not a set).
Create three new properties for CardMatchingGame to replace the previously used constants:
@property (nonatomic) int matchBonus; @property (nonatomic) int mismatchPenalty; @property (nonatomic) int flipCost;
In order to do not have to change the previous code for the matching card game, use their getters to initialize them with the values of the constants:
- (int)matchBonus { if (!_matchBonus) _matchBonus = 4; return _matchBonus; } - (int)mismatchPenalty { if (!_mismatchPenalty) _mismatchPenalty = 2; return _mismatchPenalty; } - (int)flipCost { if (!_flipCost) _flipCost = 1; return _flipCost; }
… and use the new properties instead of the constants:
- (void)flipCardAtIndex:(NSUInteger)index { ... self.score += matchScore * self.matchBonus; ... matchScore * self.matchBonus]; ... self.score -= self.mismatchPenalty; ... self.mismatchPenalty]; ... self.score -= self.flipCost; ... }
Because the matching method uses a score of 4 which might provide a quite high end score if you use a match bonus of 4, you can reduce the bonus in the getter of game:
- (CardMatchingGame *)game { ... self.game.matchBonus = 2; ... }
The complete code is available on github.