-
Notifications
You must be signed in to change notification settings - Fork 0
/
PlayingCard.m
71 lines (56 loc) · 1.14 KB
/
PlayingCard.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#import "PlayingCard.h"
@interface PlayingCard()
@end
@implementation PlayingCard
@synthesize suit = _suit;
- (int)match:(NSArray *)otherCards
{
int score = 0;
if ([otherCards count] == 1) {
PlayingCard *otherCard = [otherCards firstObject];
if ([self.suit isEqualToString:otherCard.suit]) {
score = 1;
} else if (self.rank == otherCard.rank) {
score = 4;
}
}
return score;
}
- (NSString *)contents
{
NSArray *rankStrings = [PlayingCard rankStrings];
return [rankStrings[self.rank] stringByAppendingString:self.suit];
}
+ (NSArray *) validSuits
{
return @[@"♠︎", @"♣︎", @"♥︎", @"♦︎"];
}
+ (NSArray *) rankStrings
{
return @[@"?", @"A", @"2",
@"3", @"4", @"5",
@"6", @"7", @"8",
@"9", @"10", @"J",
@"Q", @"K" ];
}
- (void)setSuit:(NSString *)suit
{
if ([[PlayingCard validSuits] containsObject:suit]) {
_suit = suit;
}
}
- (NSString *)suit
{
return _suit ? _suit : @"?";
}
+ (NSUInteger) maxRank
{
return [[PlayingCard rankStrings] count] - 1;
}
- (void) setRank:(NSUInteger)rank
{
if (rank <= [PlayingCard maxRank]) {
_rank = rank;
}
}
@end