This is Monster.h in view mode; [Download] [Up]
// This object moves and renders the Ghosts that chase and kill you. #import <gamekit/gamekit.h> typedef int intm[8]; // used in the arrays to control movement of ghosts // valid states for a ghost #define HOVER 0 #define CHASE 1 #define RUN 2 #define HOME 3 #define HARMLESS 2 // return value for munch (YES/NO/HARMLESS) // ghost colors (for "myColor" instance variable) #define BLUE_GHOST 0 #define GREEN_GHOST 1 #define ORANGE_GHOST 2 #define PURPLE_GHOST 3 #define INVISIBLE_GHOST 4 #define GHOST_EYES 5 // power dot states #define DOT_NONE 0 #define DOT_EATEN 1 #define DOT_FADING 2 @interface Monster:GameActor { id player; // This is who we chase id maze; // This is where we are id ghosts[3]; // The tiff of the ghost images BOOL eatable; // Can we be eaten ?? int lastSense; // Previous value of "sense" int powerState; // what's the power dot state int powerTime; // how long power dot's been on int state; // what we're doing int fix; // fix flag for hovering movement int loops; // number of times we've circled around in the ghost box int img; // which animation frame to use int myColor; // which ghost (0-3) am I? } - init; // Calls method below with semi-sane values...but you should use below: - initGhost:(int)num player:(id)pac maze:(id)world at:(int)sx :(int)sy; // designated initializer; initializes all the ghosts. - renderAt:(int)posx :(int)posy move:(BOOL)moveOk; // draw ghost... // lockfocus in the view where it's drawn first. - move:sender; // decide where to move the ghost for the next frame - powerDot:(BOOL)eat; // called when power dots are eaten or run out. - (BOOL)canBeEaten; // returns "eatable". - (int)munch; // called when pac intersects ghost // These four methods handle actual movement. They are internal, and generally // called by the (-move:) method. You shouldn't ever use them directly! - hover; // hover moves solid ghost when in ghost chamber - runAway; // ghost runs away at 1/2 speed after power pill - chase; // ghost chases player down - goHome; // used to make the eyes run to ghost chamber at 2x speed - moveOneFrame; // makes the animation advance one step. - powerCount; // power dot count down @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.