This is CrazyMander.m in view mode; [Download] [Up]
#import "CrazyMander.h" #import "XoxWars.h" #import "XWShip.h" @implementation CrazyMander - resetShip:ship { [ship setThrusting:NO time:0]; [ship setShields:YES]; return ship; } - oneStep:scenario { #define HALF() (randBetween(0.0,1.0)<0.5) extern float randBetween(float a, float b); int n = [ships count]; while (n--) { id ship = [ships objectAt:n]; int flag = randBetween(0.0, 4.0); switch(flag) { case 0: // change rotation if (HALF()) { int LR = (HALF()) ? LEFT : RIGHT; [ship setTurning:LR down:YES time:0]; } else { [ship setTurning:LEFT down:NO time:0]; [ship setTurning:RIGHT down:NO time:0]; } break; case 1: // fire - need shields off! if ([scenario hasBullets:alliance]) { [ship setShields:NO]; [ship fire]; } break; case 2: // thrust [ship setThrusting:YES time:0]; break; default: case 3: // shields [ship setShields:YES]; break; } } // next ship return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.