斯坦福大学公开课IOS 7 学习笔记(2)
上次的内容
#import <Foundation/NSObject.h>
@interface Card : NSObject
@property {strong ,nonatomic} NSString * contents;
@property {nonatomic} BOOL chosen;
@property {nonatomic} BOOL matched;
- (int ) match:(Card *)card;
- (int ) matchs:(NSArray *)card;
@end
#import "Card.h"
@interface Card()
@end
@synthesize contents = _contents;
@synthesize chosen = _chosen;
@synthesize matched = _matched;
- (NNString *)contents{
return _contents;
}
- (void)setContents:(NNString *contents){
_contents = contents;
}
- (BOOL) chosen
{
return _chosen;
}
- (void) setChosen:(BOOL chosen){
_chosen = chosen;
}
- (BOOL) matched{
return _matched;
}
-(void )setMatched:(BOOL matched){
_matched = matched;
}
@implementation Card
- (int )match:(Card *)card{
int score = 0;
if([card.contents isEqualToString:self.contents]){
score=1;
}
return score;
}
- (int )matchs:(NSArray *)otherCards{
int score = 0;
for(Card * card in otherCards){
if([card.contents isEqualToString:self.contents]){
score=1;
}
}
return score;
}
@end
Deck
#import <Foundation/Foundation.h>
@interface Deck:NSObejct
- (void )addCard:(Card *)Card atTop:(BOOL)arTop;
- (void )addCard:(Card *)Card;
- (void )drawRandomCard;
@end
#import "Deck.m"
@interface Deck()
@property (strong,nonatomic) NSMutableArray *cards;
@end
@implementation Deck
- (NSMutableArray *)cards{
if(!_cards) _cards = [[NSMutableArray alloc] init]
return _cards;
}
- (void )addCard:(Card *)card atTop:(BOOL)atTop{
if(atTop){
[self.cards insertObject:card atIndex:0];
}else{
[self.cards addObject:card];
}
}
- (void )addCard:(Card *)card{
[self addCard:card atTop:No];
}
- (Card *) drawRandomCard{
Card * randomCard = nil;
if([self.cards count]){
unsigned index = are4random()%[self.cards count];
randomCard = self.cards[index];
[self.cards removeObjectAtIndex:index];
}
return randomCard;
}
@end
PlayingCard
#import "Card.h"
@interface PlayingCard:Card
@property (strong,nonatomic) NSString *suit;
@property (nonatomic) NSUInteger rank;
+ (NSArray *)validSuits;
+ (NSUInteger *)maxRank;
@end
#import "PlayingCard.h"
@implementation PlayingCard
- (NSString *)contents {
NSArray *rankString = [PlayingCard rankStrings];
return rankString[self.rank] stringByAppendingString:self.suit;
}
+ (NSArray *)rankStrings{
return @[@"?",@"A",@"2",@"3",...,@"J",@"Q",@"K"];
}
+(NSUInteger )maxRank{
return [[self rankStrings] count]-1;
}
@synthesize suit=_suit;
- (NSString *)suit{
if(self.suit)
return @"?";
return self.suit;
}
+ (NSArray *) validSuits{
return @[@"1",@"2",@"3",@"4"];
}
- (void)setSuit:(NSString *)suit{
if([ @[@"1",@"2",@"3",@"4"] containsObject:suit ]){
_suit = suit;
}
}
- (void )setRank:(NSUInteger )rank{
if(rank <= [PlayingCard maxRank]){
_rank = rank;
}
}
@end
PlayingCardDeck
#import "Deck.h"
@interface PlayingCardDeck : Deck
@end
#import "PlayingCardDeck.h"
#import "PlayingCard"
@implementation PlayingCardDeck
- (instancetype)init{
self = [super init];
if(self){
for(NSString *suit in [PlayingCard validSuits]){
for(NSUInteger rank=1;ran <= [PlayingCard maxRanking];rank++){
PlayingCard * card = [[PlayingCard alloc] init];
card.rank = rank;
card.suit = suit;
[self addCard:card];
}
}
}
return self;
}
@end