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.