#import #import "peanutsmodel.h" #import "elephant.h" #import "player.h" #import "peanut.h" #import "hole.h" @implementation PeanutsModel -(id) init { [super init]; elephant = [[[Elephant alloc] initAtX:0.9 y:0.5] autorelease]; [self addSprite:elephant]; player = [[[Player alloc] initAtX:0.1 y:0.5] autorelease]; [self addSprite:player]; [self makePeanut]; score = 0; gameLength = DEFAULT_GAME_LENGTH; NSDate* currentDate = [NSDate date]; startTime = [currentDate timeIntervalSince1970]; return self; } -(int) getPlayerScore { return score; } -(Peanut*) getPeanut { return peanut; } -(Player*) getPlayer { return player; } -(void) movePlayerXDir:(int)dx yDir:(int)dy { [player moveDirX:dx y:dy]; } -(void) makePeanut { if (peanut != nil) { [self removeSprite:peanut]; } double px = (double)random() / RAND_MAX; double py = (double)random() / RAND_MAX; peanut = [[[Peanut alloc] initAtX:px y:py] autorelease]; [self addSprite:peanut]; } -(int) getTimeLeft { NSDate* currentDate = [NSDate date]; NSTimeInterval currentTime = [currentDate timeIntervalSince1970]; NSTimeInterval timeElapsed = currentTime - startTime; if (timeElapsed > gameLength) { return 0; } else { return (int)(gameLength - timeElapsed); } } -(void) update { if ([self getTimeLeft] > 0) { [super update]; } } -(void) handleCollisionSprite:(Sprite*)s1 with:(Sprite*) s2 { if ([s1 isMemberOfClass:[Peanut class]] || [s2 isMemberOfClass:[Peanut class]]) { // swap to make s1 the one that ate the peanut if ([s1 isMemberOfClass:[Peanut class]]) { Sprite* temp = s1; s1 = s2; s2 = temp; } if ([s1 isMemberOfClass:[Player class]]) { // player ate peanut int value = [(Peanut*)s2 getValue]; score += value; [self makePeanut]; // and add a value display when you make them } else if ([s1 isMemberOfClass:[Elephant class]]) { // elephant ate peanut [(Elephant*)s1 eatPeanut]; [self makePeanut]; } else { // something else ran into the peanut } } else if ([s1 isMemberOfClass:[Elephant class]] && [s2 isMemberOfClass:[Player class]]) { // player runs into elephant [(Player*)s2 trample]; } else if([s2 isMemberOfClass:[Elephant class]] && [s1 isMemberOfClass:[Player class]]) { // elephant tramples player [(Player*)s1 trample]; } else if ([s1 isMemberOfClass:[Player class]] && [s2 isMemberOfClass:[Hole class]]) { // player falls in hole [(Player*)s1 fallInHole]; [self removeSprite:s2]; } else if ([s2 isMemberOfClass:[Player class]] && [s1 isMemberOfClass:[Hole class]]) { // hole attacks player [(Player*)s2 fallInHole]; [self removeSprite:s1]; } } -(void) dealloc { [super dealloc]; } @end