This is Keno.m in view mode; [Download] [Up]
#import "Keno.h" #import "KenoCard.h" #import "KenoCardView.h" @implementation Keno /*************************************************************************************** * Module Methods * ***************************************************************************************/ - awakeFromNib /* Sent to every object instantiated in a nib file. A good place to perform some initialization... */ { return self; } - newCard:sender { char path[MAXPATHLEN+1]; if ([bundle getPath:path forResource:"card" ofType:"nib"]) { [NXApp loadNibFile:path owner:self withNames:NO fromZone:[self zone]]; } else { fprintf(stderr, "Couldn't load card nib file!\n"); return nil; } [newCard setOwner:[PBoss() currentPlayer]]; [newCard orderFront:self]; return self; } - startGame:sender { [[self getDraw] displayDraw]; return self; } - getDraw { int i, j, nextDraw; BOOL isUnique; for(i=0; i<KENO_NUMTODRAW; i++) { do { isUnique = YES; nextDraw = [self randomIntBetween:1 :80]; for(j=0; j<=i; j++) { if(nextDraw == lastDraw[j]) { isUnique = NO; break; } } } while (!isUnique); lastDraw[i] = nextDraw; } return self; } - displayDraw { int i, j, ballNum; char buf[5], drawBuf[100]; ballNum = 0; for(i=0; i<KENO_NUMTODRAW; i++) { strcpy(drawBuf, ""); for(j=0; j<ballNum+1; j++) { sprintf(buf, "%d ", lastDraw[j]); strcat(drawBuf, buf); } NXBeep(); [drawText setStringValue:drawBuf]; NXPing(); sleep(1); ballNum++; } return self; } /*************************************************************************************** * Inspector And Rules Methods * ***************************************************************************************/ - (BOOL)hasRules /* NO if the module does not have a Rules Window, YES if it does. The default method returns NO. */ { return YES; } - inspectorWillBeRemoved:sender /* Sent when this module's inspector is about to be replace with another one. */ { return self; } - inspectorWasInstalled:sender /* Sent just after this module's inspector has been installed. */ { return self; } /*************************************************************************************** * Player Methods * ***************************************************************************************/ - (int)collectAllBetsForPlayer:(int)playerNum { return 0; } - playerDidBet:aPlayer { return self; } - playerDidClose:aPlayer /* * Sent after a player has closed and is no longer part of the game. No messages * should be sent to aPlayer. This method should just do some internal cleanup * if necessary. */ { return self; } - playerDidJoin:player { return self; } - (BOOL)playerWillClose:aPlayer /* * Should return YES if it is okay to close this player, NO if it is not. The * default implementation returns YES. */ { return YES; } - (BOOL)playerWillJoin:sender { return YES; } /*************************************************************************************** * Table Methods * ***************************************************************************************/ - view:aView wasLoadedOnTable:tableObject { table = tableObject; return self; } /*************************************************************************************** * Other Misc. Methods * ***************************************************************************************/ - finishSessionAndClose /* This message is sent when a new game is being loaded. If there is any clean up to do, this is where to do it. */ { return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.