This is aSquare.m in view mode; [Download] [Up]
#import "aSquare.h"
#import "robotView.h"
@implementation aSquare
- init
{
[super init];
myRobotID = NOROBOT;
return self;
}
- setDelegate:sender
{
myDelegate = sender;
return self;
}
- (BOOL)takeScrap
{
if (![self hasScrap] && ([self hasRobotID] == NOROBOT))
{
myRobotID = SCRAP;
return YES;
}
return NO;
}
- (BOOL)moveScrap:targetSquare
{
if ([self hasScrap] && [targetSquare takeScrap])
{
myRobotID = NOROBOT;
return YES;
}
return NO;
}
- removeRobot:(aRobot *) theRobot
{
if ([self hasRobotID] != theRobot->idnumber)
{ /* printf ("Wrong robot removed!!!\n"); */
;
}
myRobotID = NOROBOT;
return self;
}
- addRobot:(aRobot *) theRobot
{
if ([self hasScrap])
{
[myDelegate deleteRobotID:theRobot->idnumber];
return self;
}
if ([self hasRobotID] != NOROBOT)
{
/* Scrap one, it's drawn scrapped, scrap the rest, they're not redrawn. */
[myDelegate scrapRobotID:theRobot->idnumber];
[myDelegate scrapRobotID:myRobotID];
[myDelegate newScrap];
myRobotID = SCRAP;
return self;
}
theRobot->occupiedSquare = self;
myRobotID = theRobot->idnumber;
return self;
}
- (int)hasRobotID
{
if ([self hasScrap])
{
return NOROBOT;
}
return myRobotID;
}
- (BOOL)hasScrap
{
return (myRobotID == SCRAP);
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.