// // main.m // PlayerAndGame // // Created by User on 4/06/2014. // Copyright (c) 2014 RJM Programming. All rights reserved. // // Thanks to Objective-C by Steven Holzner (for code ideas) #import #import #import @interface Player: NSObject { @private char privatename[31]; @public char publicname[31]; @protected char protectedname[31]; } -(void) print; -(char *) getName; -(char *) getNamePrivate; -(void) setName: (char *) iname; @end @implementation Player -(Player*) init: (char *) inname { self = [super init]; if (self) { [self setName: inname]; } return self; } -(char *) getName { return publicname; } -(char *) getNamePrivate { return privatename; } -(void) setName: (char *) iname { strcpy(protectedname, iname); strcpy(privatename, iname); strcpy(publicname, iname); } -(void) print { printf("Welcome to the game, %s.\n", privatename); } @end @interface Game: NSObject { @private Player *player1; Player *player2; @public int score1; int score2; int goes; } -(void) print; -(void) makeAMove; -(void) setPlayer1: (Player *) inplayer1; -(void) setPlayer2: (Player *) inplayer2; -(char *) getWinner; -(int) getScore1; -(int) getScore2; -(void) setScore1: (int) inscore1; -(void) setScore2: (int) inscore2; -(void) play; @end @implementation Game -(Game*) init: (Player *) inplay1 :(Player *) inplay2 { self = [super init]; if (self) { [self setPlayer1: inplay1]; [self setPlayer2: inplay2]; [self setScore1: 0]; [self setScore2: 0]; self->goes = 0; } return self; } -(void) makeAMove { int r = arc4random() % 12; if ((self->goes % 2) == 1) { r += [self getScore1]; [self setScore1 :r]; } else { r += [self getScore2]; [self setScore2 :r]; } self->goes++; } -(void) setPlayer1: (Player *) inplayer1 { player1 = inplayer1; } -(void) setPlayer2: (Player *) inplayer2 { player2 = inplayer2; } -(char *) getWinner { if ([self getScore2] > [self getScore1] ) { return [player2 getName]; } else { return [player1 getName]; } } -(int) getScore1 { return score1; } -(int) getScore2 { return score2; } -(void) setScore1: (int) inscore1 { score1 = inscore1; } -(void) setScore2: (int) inscore2 { score2 = inscore2; } -(void) play { for (int i=0; i<10; i++) [self makeAMove]; } -(void) print { printf("Welcome to The game between %s and %s ... the score is %d vs %d ... so %s is the current winner/leader.\n", [player1 getName], [player2 getName], [self getScore1], [self getScore2], [self getWinner]); } @end int main(int argc, const char * argv[]) { @autoreleasepool { id pid; Player *p1 = [[Player new] init: "Eric"]; if ( [p1 isKindOfClass: [NSObject class]] == YES ) { pid = p1; printf("p1 for %s is an NSObject.\n", [pid getName]); [p1 print]; [pid print]; } Player *p2 = [Player new]; if ( [p2 isKindOfClass: [NSObject class]] == YES ) { pid = p2; printf("p2 for %s is an NSObject.\n", [pid getName]); [p2 print]; [pid print]; char *xname = "Idle\0"; [p2 setName :xname]; printf("p2 for %s is NSObject.\n", p2->publicname); printf("p2 For %s is NSObject.\n", [p2 getNamePrivate]); [p2 print]; [pid print]; } Game *g1 = [[Game new] init: p1 :p2]; if ( [g1 isKindOfClass: [NSObject class]] == YES ) { printf("g1 is an NSObject.\n"); [g1 print]; [g1 play]; [g1 print]; } } return 0; }